Function at 0x631f4f60
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push r15
mov eax, 0x4908
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.63012d50
sub rsp, rax
movups xmmword [rsp + 0x48f0], xmm6
lea rdi, [0x631f3400]
lea rbx, [0x63206410]
movq xmm0, rdi
cmp dword [rsp + 0x4970], 4
mov qword [rsp + 0x4958], rdx
lea rdx, [0x631e1840]
movq xmm2, rdx
mov qword [rsp + 0x4960], r8
punpcklqdq xmm0, xmm2
mov qword [rsp + 0x4968], r9
mov qword [rsp + 0x170], rcx
mov qword [rsp + 0x48e8], rbx
mov dword [rcx + 8], 0
movups xmmword [rsp + 0x48d8], xmm0
ja 0x631f51e0
lea rbp, [rsp + 0x170]
pxor xmm1, xmm1
xor edx, edx
mov dword [rsp + 0x48cc], 0
mov rcx, rbp
movups xmmword [rsp + 0x4748], xmm1
movups xmmword [rsp + 0x47a8], xmm1
movups xmmword [rsp + 0x4808], xmm1
movups xmmword [rsp + 0x4868], xmm1
call fcn.631ee4c0
test eax, eax
jne 0x631f50e8
nop word [rax + rax]
mov rsi, qword [rsp + 0x170]
mov r12d, dword [rsi + 8]
xor edi, edi
pxor xmm6, xmm6
test r12d, r12d
jle 0x631f50c0
mov rcx, qword [rbp + 0x45d8]
test rcx, rcx
je 0x631f5067
call fcn.63020868
movups xmmword [rbp + 0x45d0], xmm6
mov rcx, qword [rbp + 0x45e0]
test rcx, rcx
je 0x631f508e
call fcn.63020868
mov qword [rbp + 0x45e0], 0
mov qword [rbp + 0x45f0], 0
mov rcx, qword [rbp + 0x45e8]
test rcx, rcx
je 0x631f50aa
call fcn.63020868
mov qword [rbp + 0x45e8], 0
mov rcx, qword [rsp + 0x170]
add edi, 1
add rbp, 0x60
cmp dword [rcx + 8], edi
jg 0x631f504f
nop
xor r13d, r13d
movups xmm6, xmmword [rsp + 0x48f0]
mov rax, r13
add rsp, 0x4908
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rsp + 0x4898]
cmp al, 0xff
je 0x631f5200
mov byte [rsp + 0x4898], 0xff
movzx edx, al
cmp al, 0xd9
je 0x631f52f6
lea rbx, [rsp + 0x1bb8]
mov r13, rbp
mov qword [rsp + 0x58], rbx
nop dword [rax + rax]
cmp edx, 0xda
jne 0x631f52c0
mov rdi, qword [rsp + 0x170]
mov rbp, qword [rdi + 0xb8]
mov rcx, qword [rdi + 0xc0]
cmp rbp, rcx
jae 0x631f5808
lea rsi, [rbp + 1]
mov qword [rdi + 0xb8], rsi
movzx r14d, byte [rbp]
shl r14d, 8
cmp rsi, rcx
jae 0x631f5863
lea r11, [rsi + 1]
mov qword [rdi + 0xb8], r11
movzx eax, byte [rsi]
mov rdi, qword [rsp + 0x170]
add r14d, eax
mov rbx, qword [rdi + 0xb8]
mov rsi, rdi
cmp rbx, qword [rdi + 0xc0]
jae 0x631f57a0
lea r10, [rbx + 1]
mov qword [rdi + 0xb8], r10
movzx r9d, byte [rbx]
lea ecx, [r9 - 1]
mov dword [rsp + 0x48b8], r9d
cmp ecx, 3
ja 0x631f5cac
mov r12d, dword [rsi + 8]
cmp r12d, r9d
jge 0x631f5c30
mov rbp, r13
lea r10, str.bad_SOS_component_count
mov qword [0x63273660], r10
jmp 0x631f5044
lea r9, str.bad_req_comp
xor r13d, r13d
mov qword [0x63273660], r9
jmp 0x631f50c3
mov r12, qword [rsp + 0x170]
mov rcx, qword [r12 + 0xb8]
cmp rcx, qword [r12 + 0xc0]
jae 0x631f5fb0
lea r10, [rcx + 1]
mov qword [r12 + 0xb8], r10
movzx r9d, byte [rcx]
cmp r9b, 0xff
jne 0x631f5ffe
nop dword [rax + rax]
mov r14, qword [rsp + 0x170]
mov r11, qword [r14 + 0xb8]
cmp r11, qword [r14 + 0xc0]
jae 0x631f6010
lea rdx, [r11 + 1]
mov qword [r14 + 0xb8], rdx
movzx eax, byte [r11]
cmp al, 0xff
je 0x631f5240
jmp 0x631f5100
mov ecx, dword [rbx + 0x30]
test ecx, ecx
je 0x631f52b8
lea rsi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov r8d, dword [rbx + 0x34]
mov rdx, rsi
call qword [rbx + 0x10]
lea r9, [rbx + 0x39]
movq xmm3, r9
test eax, eax
jne 0x631f5ce8
mov dword [rbx + 0x30], 0
punpcklqdq xmm3, xmm3
mov byte [rbx + 0x38], 0
movups xmmword [rbx + 0xb8], xmm3
mov edx, 0xff
nop dword [rax]
mov rcx, r13
call fcn.63204410
test eax, eax
je 0x631f5708
movzx eax, byte [rsp + 0x4898]
cmp al, 0xff
je 0x631f5490
mov byte [rsp + 0x4898], 0xff
movzx edx, al
cmp al, 0xd9
jne 0x631f5120
mov rbp, r13
mov r12, qword [rsp + 0x170]
mov esi, dword [rsp + 0x48a0]
mov ecx, dword [r12 + 8]
mov rbx, r12
mov dword [rsp + 0x4c], ecx
test esi, esi
jne 0x631f6198
mov r11d, dword [rsp + 0x4970]
mov r10d, dword [rsp + 0x4c]
mov edi, dword [r12]
test r11d, r11d
mov esi, r10d
cmovne esi, dword [rsp + 0x4970]
mov dword [rsp + 0x50], esi
cmp esi, 2
jg 0x631f5f30
mov dword [rsp + 0x40], 1
cmp r10d, 3
jne 0x631f5f30
mov qword [rsp + 0x58], rbp
lea r13d, [rdi + 3]
mov r14, rbp
xor r15d, r15d
lea rsi, [rsp + 0xb0]
jmp 0x631f53cf
movabs r8, 0x200000001
cmp r9, r8
je 0x631f5480
movabs rax, 0x100000002
cmp r9, rax
je 0x631f5470
movabs rdx, 0x200000002
cmp r9, rdx
je 0x631f5790
lea r11, [0x632059c0]
mov qword [rsi], r11
nop dword [rax + rax]
add r15d, 1
add r14, 0x60
add rsi, 0x30
cmp r15d, dword [rsp + 0x40]
jge 0x631f58c0
mov rcx, r13
call sub.msvcrt.dll_malloc
mov qword [r14 + 0x45e8], rax
test rax, rax
je 0x631f6b3a
mov eax, dword [rsp + 0x46f8]
movsxd r11, r15d
movq xmm3, qword [r14 + 0x45d0]
mov dword [rsi + 0x28], 0
movabs rcx, 0x100000001
lea r10, [r11 + r11*2]
cdq
punpcklqdq xmm3, xmm3
shl r10, 4
idiv dword [r14 + 0x45a4]
movups xmmword [rsi + 8], xmm3
mov r8d, eax
mov dword [rsi + 0x18], eax
mov eax, dword [rsp + 0x46fc]
cdq
idiv dword [r14 + 0x45a8]
xor edx, edx
mov dword [rsi + 0x1c], eax
sar eax, 1
mov dword [rsi + 0x24], eax
lea eax, [rdi + r8 - 1]
div r8d
mov dword [rsi + 0x20], eax
mov r9, qword [rsp + r10 + 0xc8]
cmp r9, rcx
jne 0x631f5370
lea r8, [0x631dd520]
mov qword [rsi], r8
jmp 0x631f53b8
lea r9, [0x63205dc0]
mov qword [rsi], r9
jmp 0x631f53b8
lea rcx, [0x63206540]
mov qword [rsi], rcx
jmp 0x631f53b8
mov rbx, qword [rsp + 0x170]
mov r10, qword [rbx + 0xb8]
cmp r10, qword [rbx + 0xc0]
jae 0x631f5278
lea rbp, [r10 + 1]
mov qword [rbx + 0xb8], rbp
movzx edx, byte [r10]
cmp dl, 0xff
jne 0x631f52b8
nop dword [rax]
mov r12, qword [rsp + 0x170]
mov r15, qword [r12 + 0xb8]
cmp r15, qword [r12 + 0xc0]
jae 0x631f5710
lea r8, [r15 + 1]
mov qword [r12 + 0xb8], r8
movzx eax, byte [r15]
cmp al, 0xff
je 0x631f54c8
jmp 0x631f52e8
test edi, edi
jne 0x631f6170
test eax, eax
jne 0x631f6170
test bl, bl
jne 0x631f6170
mov eax, dword [rsp + 0x48cc]
mov dword [rsp + 0x48a8], 0x3f
mov dword [rsp + 0x489c], 0
mov dword [rsp + 0x47e8], 0
mov dword [rsp + 0x4788], 0
mov dword [rsp + 0x4728], 0
mov qword [rsp + 0x4890], 0
mov byte [rsp + 0x4898], 0xff
test eax, eax
je 0x631f6c0c
mov dword [rsp + 0x48d0], eax
mov dword [rsp + 0x48b4], 0
cmp dword [rsp + 0x48b8], 1
je 0x631f65e8
mov ecx, dword [rsp + 0x4704]
test ecx, ecx
jle 0x631f64f8
mov dword [rsp + 0x4c], 0
mov eax, dword [rsp + 0x4700]
test eax, eax
jle 0x631f64d0
lea r15, [rsp + 0x178]
mov dword [rsp + 0x40], 0
mov qword [rsp + 0x60], r15
mov r12d, dword [rsp + 0x48b8]
lea r14, [rsp + 0xb0]
mov qword [rsp + 0x68], 0
test r12d, r12d
jle 0x631f6490
mov r8, qword [rsp + 0x68]
movsxd r9, dword [r13 + r8*4 + 0x474c]
lea rbp, [r9 + r9*2]
mov dword [rsp + 0x50], r9d
shl rbp, 5
mov ebx, dword [rsp + rbp + 0x4718]
test ebx, ebx
jle 0x631f647c
mov esi, dword [rsp + rbp + 0x4714]
xor r12d, r12d
test esi, esi
jle 0x631f6467
lea rcx, [rsp + 0x48f0]
xor r15d, r15d
lea rdi, [rcx + rbp]
jmp 0x631f5683
mov edx, dword [rdi - 0x1bc]
movsxd rsi, esi
mov r8, r14
add r15d, 1
imul ebx, edx
lea ebx, [rbx*8]
movsxd rcx, ebx
add rcx, rsi
add rcx, qword [rdi - 0x1b0]
call qword [rsp + 0x48d8]
mov esi, dword [rdi - 0x1dc]
cmp esi, r15d
jle 0x631f6460
mov ebx, dword [rdi - 0x1d8]
movsxd r10, dword [rdi - 0x1cc]
movsxd rdx, dword [rdi - 0x1d0]
movsxd rax, dword [rdi - 0x1d4]
mov ecx, dword [rsp + 0x50]
imul r11, r10, 0x690
shl r10, 0xa
imul r8, rdx, 0x690
shl rax, 6
mov dword [rsp + 0x28], ecx
mov rdx, qword [rsp + 0x58]
imul esi, dword [rsp + 0x40]
lea r9, [r13 + rax + 0x3488]
mov rcx, r13
lea r10, [r13 + r10 + 0x3588]
mov qword [rsp + 0x30], r9
lea r9, [rdx + r11]
mov r11, qword [rsp + 0x60]
imul ebx, dword [rsp + 0x4c]
mov qword [rsp + 0x20], r10
mov rdx, r14
add esi, r15d
lea r8, [r11 + r8]
shl esi, 3
add ebx, r12d
call fcn.631f45f0
test eax, eax
jne 0x631f5640
mov rbp, r13
jmp 0x631f5038
mov edx, dword [r12 + 0x30]
test edx, edx
je 0x631f52c0
lea r14, [r12 + 0x38]
mov rcx, qword [r12 + 0x28]
mov r8d, dword [r12 + 0x34]
lea rdi, [r12 + 0x39]
mov rdx, r14
movq xmm6, rdi
call qword [r12 + 0x10]
movsxd rdx, eax
test edx, edx
jne 0x631f5770
punpcklqdq xmm6, xmm6
mov byte [r12 + 0x38], 0
mov dword [r12 + 0x30], 0
movups xmmword [r12 + 0xb8], xmm6
jmp 0x631f52c0
add rdx, r14
movzx eax, byte [r12 + 0x38]
movq xmm0, rdx
punpcklqdq xmm6, xmm0
movups xmmword [r12 + 0xb8], xmm6
jmp 0x631f54f6
mov r10, qword [rsp + 0x48e8]
mov qword [rsi], r10
jmp 0x631f53b8
mov edx, dword [rdi + 0x30]
test edx, edx
je 0x631f5c58
lea r15, [rdi + 0x38]
mov r8d, dword [rdi + 0x34]
mov rcx, qword [rdi + 0x28]
mov rdx, r15
call qword [rdi + 0x10]
lea r8, [rdi + 0x39]
test eax, eax
jne 0x631f5c70
movq xmm0, r8
mov byte [rdi + 0x38], 0
mov rbp, r13
mov rsi, qword [rsp + 0x170]
punpcklqdq xmm0, xmm0
mov dword [rdi + 0x30], 0
movups xmmword [rdi + 0xb8], xmm0
mov dword [rsp + 0x48b8], 0
mov r12d, dword [rsi + 8]
jmp 0x631f51cc
mov r14d, dword [rdi + 0x30]
test r14d, r14d
je 0x631f5181
lea r12, [rdi + 0x38]
mov rcx, qword [rdi + 0x28]
mov r8d, dword [rdi + 0x34]
lea rsi, [rdi + 0x39]
mov rdx, r12
call qword [rdi + 0x10]
movsxd r14, eax
test r14d, r14d
jne 0x631f5cd0
mov dword [rdi + 0x30], 0
mov rcx, rsi
mov byte [rdi + 0x38], 0
movq xmm1, rsi
movq xmm3, rcx
punpcklqdq xmm1, xmm3
movups xmmword [rdi + 0xb8], xmm1
cmp rsi, rcx
jb 0x631f5168
mov r8d, dword [rdi + 0x30]
test r8d, r8d
je 0x631f58ab
lea r15, [rdi + 0x38]
mov rcx, qword [rdi + 0x28]
mov r8d, dword [rdi + 0x34]
mov rdx, r15
call qword [rdi + 0x10]
lea r9, [rdi + 0x39]
test eax, eax
jne 0x631f5cb8
mov dword [rdi + 0x30], 0
mov byte [rdi + 0x38], 0
mov qword [rsp + 0x40], r9
movq xmm4, r9
movhps xmm4, qword [rsp + 0x40]
movups xmmword [rdi + 0xb8], xmm4
mov rdi, qword [rsp + 0x170]
jmp 0x631f5181
mov r12d, dword [r12 + 4]
mov r13d, r12d
imul r13d, edi
imul r13d, dword [rsp + 0x50]
lea ecx, [r13 + 1]
call sub.msvcrt.dll_malloc
mov r13, rax
test rax, rax
je 0x631f7a1f
test r12d, r12d
je 0x631f5ad0
mov ecx, dword [rsp + 0x40]
movsxd rsi, dword [rsp + 0x50]
xor r15d, r15d
lea r9, [rsp + 0x90]
mov qword [rsp + 0x70], r9
sub ecx, 1
mov dword [rsp + 0x4c], 0
mov r14, rsi
lea r8, [rsp + rcx*8 + 0x98]
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x68], r8
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x60], rbp
nop dword [rax + rax]
mov r12d, dword [rsp + 0x4c]
mov ebp, dword [rsp + 0x40]
imul r12d, edi
add r12, qword [rsp + 0x58]
test ebp, ebp
jle 0x631f59da
mov rdi, qword [rsp + 0x60]
mov r13, qword [rsp + 0x70]
lea rbx, [rsp + 0xb0]
nop dword [rax]
mov r10d, dword [rbx + 0x1c]
mov rsi, qword [rbx + 0x10]
mov ebp, dword [rbx + 0x24]
mov rax, qword [rbx]
mov ecx, r10d
mov r11d, dword [rbx + 0x18]
mov r9d, dword [rbx + 0x20]
mov r8, rsi
sar ecx, 1
mov rdx, qword [rbx + 8]
cmp ebp, ecx
jl 0x631f5994
mov r8, rdx
mov rdx, rsi
mov rcx, qword [rdi + 0x45e8]
mov dword [rsp + 0x50], r10d
add ebp, 1
mov dword [rsp + 0x20], r11d
call rax
mov edx, dword [rsp + 0x50]
mov qword [r13], rax
cmp edx, ebp
jle 0x631f5a40
mov dword [rbx + 0x24], ebp
add rbx, 0x30
add rdi, 0x60
add r13, 8
cmp qword [rsp + 0x68], r13
jne 0x631f5968
mov rbx, qword [rsp + 0x170]
mov edi, dword [rbx]
mov rdx, qword [rsp + 0x90]
cmp r14d, 2
jle 0x631f5a80
cmp dword [rbx + 8], 3
jne 0x631f5ba0
mov dword [rsp + 0x28], r14d
mov r9, qword [rsp + 0xa0]
mov rcx, r12
mov dword [rsp + 0x20], edi
mov r8, qword [rsp + 0x98]
call qword [rsp + 0x48e0]
mov rbx, qword [rsp + 0x170]
add dword [rsp + 0x4c], r14d
add r15d, 1
cmp dword [rbx + 4], r15d
jbe 0x631f5abd
mov edi, dword [rbx]
jmp 0x631f5938
mov r9d, dword [rbx + 0x28]
mov dword [rbx + 0x24], 0
mov qword [rbx + 8], rsi
add r9d, 1
mov dword [rbx + 0x28], r9d
cmp r9d, dword [rdi + 0x45c0]
jge 0x631f59bd
movsxd r8, dword [rdi + 0x45c4]
add rsi, r8
mov qword [rbx + 0x10], rsi
jmp 0x631f59bd
cmp r14d, 1
je 0x631f5be0
test edi, edi
je 0x631f5a21
xor edi, edi
mov r13d, edi
movzx ebp, byte [rdx + r13]
mov byte [r12 + rdi*2 + 1], 0xff
mov byte [r12 + rdi*2], bpl
add rdi, 1
cmp dword [rbx], edi
ja 0x631f5a90
add dword [rsp + 0x4c], r14d
add r15d, 1
cmp dword [rbx + 4], r15d
ja 0x631f5a34
mov r15d, dword [rbx + 8]
mov r13, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
mov dword [rsp + 0x4c], r15d
mov r14d, dword [rsp + 0x4c]
xor r12d, r12d
pxor xmm6, xmm6
test r14d, r14d
jle 0x631f5b5d
nop dword [rax]
mov rcx, qword [rbp + 0x45d8]
test rcx, rcx
je 0x631f5b00
call fcn.63020868
movups xmmword [rbp + 0x45d0], xmm6
mov rcx, qword [rbp + 0x45e0]
test rcx, rcx
je 0x631f5b27
call fcn.63020868
mov qword [rbp + 0x45e0], 0
mov qword [rbp + 0x45f0], 0
mov rcx, qword [rbp + 0x45e8]
test rcx, rcx
je 0x631f5c10
call fcn.63020868
add r12d, 1
add rbp, 0x60
mov rbx, qword [rsp + 0x170]
mov qword [rbp + 0x4588], 0
cmp r12d, dword [rbx + 8]
jl 0x631f5ae8
mov edx, dword [rbx]
mov r8, qword [rsp + 0x4958]
mov r10, qword [rsp + 0x4960]
cmp qword [rsp + 0x4968], 0
mov dword [r8], edx
mov ebp, dword [rbx + 4]
mov dword [r10], ebp
je 0x631f50c3
mov eax, dword [rbx + 8]
mov r11, qword [rsp + 0x4968]
mov dword [r11], eax
jmp 0x631f50c3
test edi, edi
je 0x631f5a21
xor esi, esi
nop word [rax + rax]
mov ecx, esi
add esi, 1
movzx r9d, byte [rdx + rcx]
mov byte [r12 + 3], 0xff
mov byte [r12 + 2], r9b
mov byte [r12 + 1], r9b
mov byte [r12], r9b
add r12, qword [rsp + 0x78]
cmp dword [rbx], esi
ja 0x631f5bb0
jmp 0x631f5a21
test edi, edi
je 0x631f5a21
xor r10d, r10d
nop dword [rax + rax]
mov eax, r10d
add r10d, 1
movzx r11d, byte [rdx + rax]
mov byte [r12 + rax], r11b
cmp dword [rbx], r10d
ja 0x631f5bf0
jmp 0x631f5a21
mov rbx, qword [rsp + 0x170]
add r12d, 1
add rbp, 0x60
cmp dword [rbx + 8], r12d
jg 0x631f5ae8
jmp 0x631f5b5d
lea edi, [r9 + r9 + 6]
cmp edi, r14d
je 0x631f5d10
lea rbx, str.bad_SOS_len
mov rbp, r13
mov qword [0x63273660], rbx
jmp 0x631f5044
mov dword [rsp + 0x48b8], 0
mov rbp, r13
mov r12d, dword [rdi + 8]
jmp 0x631f51cc
cdqe
movzx r9d, byte [rdi + 0x38]
movq xmm6, r8
mov rsi, qword [rsp + 0x170]
add rax, r15
movq xmm5, rax
lea ecx, [r9 - 1]
punpcklqdq xmm6, xmm5
movups xmmword [rdi + 0xb8], xmm6
mov dword [rsp + 0x48b8], r9d
cmp ecx, 3
jbe 0x631f51bc
mov rbp, r13
jmp 0x631f57fa
movzx r10d, byte [rdi + 0x38]
cdqe
add rax, r15
mov qword [rsp + 0x40], rax
add r14d, r10d
jmp 0x631f589a
lea rcx, [r12 + r14]
movzx r14d, byte [rdi + 0x38]
shl r14d, 8
jmp 0x631f5845
cdqe
movzx edx, byte [rbx + 0x38]
add rax, rsi
movq xmm4, rax
punpcklqdq xmm3, xmm4
movups xmmword [rbx + 0xb8], xmm3
jmp 0x631f54bb
test r9d, r9d
je 0x631f60a8
xor r14d, r14d
jmp 0x631f5e11
lea r12, [r11 + 1]
mov qword [rsi + 0xb8], r12
movzx ebx, byte [r11]
cmp r12, r15
jae 0x631f5e94
lea rcx, [r12 + 1]
mov qword [rsi + 0xb8], rcx
movzx eax, byte [r12]
mov r8d, eax
mov r10d, dword [rsi + 8]
test r10d, r10d
jle 0x631f5f50
cmp ebx, dword [rsp + 0x4710]
je 0x631f5f60
cmp r10d, 1
je 0x631f5f70
cmp ebx, dword [rsp + 0x4770]
je 0x631f5f80
cmp r10d, 2
je 0x631f5f90
cmp ebx, dword [rsp + 0x47d0]
je 0x631f5fa0
cmp r10d, 3
je 0x631f6088
cmp dword [rsp + 0x4830], ebx
je 0x631f6098
mov r12d, 4
cmp r10d, r12d
je 0x631f6418
movsxd r11, r12d
sar eax, 4
lea rbx, [r11 + r11*2]
shl rbx, 5
mov dword [rsp + rbx + 0x4720], eax
cmp eax, 3
jg 0x631f6420
mov ebp, r8d
and ebp, 0xf
and r8d, 0xc
mov dword [rsp + rbx + 0x4724], ebp
jne 0x631f6440
mov dword [r13 + r14*4 + 0x474c], r12d
add r14, 1
cmp dword [rsp + 0x48b8], r14d
jle 0x631f60a8
mov r11, qword [rsi + 0xb8]
mov r15, qword [rsi + 0xc0]
cmp r11, r15
jb 0x631f5d28
mov ebx, dword [rsi + 0x30]
test ebx, ebx
je 0x631f5ef0
lea rbp, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov r8d, dword [rsi + 0x34]
mov rdx, rbp
call qword [rsi + 0x10]
lea rdx, [rsi + 0x39]
movsxd rbx, eax
test ebx, ebx
jne 0x631f5f00
mov dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
mov qword [rsp + 0x40], rdx
movq xmm2, rdx
movhps xmm2, qword [rsp + 0x40]
movups xmmword [rsi + 0xb8], xmm2
mov rsi, qword [rsp + 0x170]
mov r12, qword [rsi + 0xb8]
mov r15, qword [rsi + 0xc0]
cmp r12, r15
jb 0x631f5d40
mov eax, dword [rsi + 0x30]
test eax, eax
je 0x631f7aa0
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov r8d, dword [rsi + 0x34]
mov rdx, rdi
call qword [rsi + 0x10]
lea r9, [rsi + 0x39]
test eax, eax
jne 0x631f5f18
mov dword [rsi + 0x30], 0
xor r8d, r8d
mov byte [rsi + 0x38], 0
mov qword [rsp + 0x40], r9
movq xmm1, r9
movhps xmm1, qword [rsp + 0x40]
movups xmmword [rsi + 0xb8], xmm1
mov rsi, qword [rsp + 0x170]
jmp 0x631f5d54
xor eax, eax
xor r8d, r8d
jmp 0x631f5d54
lea rax, [rbp + rbx]
movzx ebx, byte [rsi + 0x38]
mov qword [rsp + 0x40], rax
jmp 0x631f5e64
cdqe
add rax, rdi
mov qword [rsp + 0x40], rax
movzx eax, byte [rsi + 0x38]
mov r8d, eax
jmp 0x631f5ecc
mov r9d, dword [rsp + 0x4c]
test r9d, r9d
jle 0x631f6988
mov dword [rsp + 0x40], r9d
jmp 0x631f5357
xor r12d, r12d
jmp 0x631f5db9
xor r12d, r12d
jmp 0x631f5dc2
mov r12d, 1
jmp 0x631f5db9
mov r12d, 1
jmp 0x631f5dc2
mov r12d, 2
jmp 0x631f5db9
mov r12d, 2
jmp 0x631f5dc2
mov esi, dword [r12 + 0x30]
test esi, esi
je 0x631f5ffe
lea r13, [r12 + 0x38]
mov r8d, dword [r12 + 0x34]
mov rcx, qword [r12 + 0x28]
mov rdx, r13
call qword [r12 + 0x10]
lea r8, [r12 + 0x39]
test eax, eax
jne 0x631f6ab0
movq xmm5, r8
mov byte [r12 + 0x38], 0
mov dword [r12 + 0x30], 0
punpcklqdq xmm5, xmm5
movups xmmword [r12 + 0xb8], xmm5
mov edx, 0xff
jmp 0x631f510b
mov edx, dword [r14 + 0x30]
test edx, edx
je 0x631f510b
lea r15, [r14 + 0x38]
mov rcx, qword [r14 + 0x28]
mov r8d, dword [r14 + 0x34]
lea rdi, [r14 + 0x39]
mov rdx, r15
call qword [r14 + 0x10]
movsxd rdx, eax
test edx, edx
jne 0x631f6060
movq xmm2, rdi
mov dword [r14 + 0x30], 0
punpcklqdq xmm2, xmm2
mov byte [r14 + 0x38], 0
movups xmmword [r14 + 0xb8], xmm2
jmp 0x631f510b
add rdx, r15
movq xmm6, rdi
movzx eax, byte [r14 + 0x38]
movq xmm0, rdx
punpcklqdq xmm6, xmm0
movups xmmword [r14 + 0xb8], xmm6
jmp 0x631f526b
mov r12d, 3
jmp 0x631f5db9
mov r12d, 3
jmp 0x631f5dc2
mov rax, qword [rsi + 0xb8]
mov r10, qword [rsi + 0xc0]
cmp rax, r10
jae 0x631f6920
lea r8, [rax + 1]
mov qword [rsi + 0xb8], r8
movzx eax, byte [rax]
mov dword [rsp + 0x48a4], eax
cmp r8, r10
jae 0x631f68b8
lea rcx, [r8 + 1]
mov qword [rsi + 0xb8], rcx
movzx eax, byte [r8]
mov dword [rsp + 0x48a8], eax
cmp rcx, r10
jae 0x631f685a
lea r14, [rcx + 1]
mov qword [rsi + 0xb8], r14
movzx eax, byte [rcx]
mov edx, eax
sar eax, 4
mov ebx, edx
and edx, 0xf
and ebx, 0xf
mov r12d, dword [rsp + 0x48a0]
mov dword [rsp + 0x48ac], eax
mov dword [rsp + 0x48b0], edx
mov edi, dword [rsp + 0x48a4]
test r12d, r12d
je 0x631f5500
cmp edi, 0x3f
jg 0x631f6170
mov ebp, dword [rsp + 0x48a8]
cmp ebp, edi
setl dil
cmp ebp, 0x3f
setg sil
or edi, esi
cmp eax, 0xd
setg r12b
or dil, r12b
jne 0x631f6170
cmp bl, 0xd
jbe 0x631f6c27
nop dword [rax]
mov r11, qword [rsp + 0x170]
mov rbp, r13
lea r13, str.bad_SOS
mov qword [0x63273660], r13
mov r12d, dword [r11 + 8]
jmp 0x631f5044
mov edx, ecx
test ecx, ecx
jle 0x631f5319
mov r13, rbp
xor edi, edi
pxor xmm6, xmm6
mov esi, dword [r13 + 0x45c0]
mov r9d, dword [r13 + 0x45bc]
add esi, 7
add r9d, 7
sar esi, 3
sar r9d, 3
test esi, esi
jle 0x631f63fd
test r9d, r9d
jle 0x631f63f5
xor r15d, r15d
lea r12d, [r9 - 1]
nop
mov ebx, r12d
xor r14d, r14d
jmp 0x631f62dd
movdqu xmm5, xmmword [rdx]
movdqu xmm1, xmmword [r8 + 0x10]
movdqu xmm3, xmmword [r8]
movdqu xmm2, xmm5
punpcklbw xmm5, xmm6
punpckhbw xmm2, xmm6
pmullw xmm5, xmm3
movdqu xmm3, xmmword [r8 + 0x50]
pmullw xmm2, xmm1
movups xmmword [r8], xmm5
movdqu xmm5, xmmword [r8 + 0x30]
movups xmmword [r8 + 0x10], xmm2
movdqu xmm4, xmmword [rdx + 0x10]
movdqu xmm2, xmmword [r8 + 0x20]
movdqu xmm0, xmm4
punpcklbw xmm4, xmm6
punpckhbw xmm0, xmm6
pmullw xmm4, xmm2
movdqu xmm2, xmmword [r8 + 0x60]
pmullw xmm0, xmm5
movdqu xmm5, xmmword [r8 + 0x70]
movups xmmword [r8 + 0x20], xmm4
movdqu xmm4, xmmword [r8 + 0x40]
movups xmmword [r8 + 0x30], xmm0
movdqu xmm0, xmmword [rdx + 0x20]
movdqu xmm1, xmm0
punpcklbw xmm0, xmm6
punpckhbw xmm1, xmm6
pmullw xmm0, xmm4
pmullw xmm1, xmm3
movups xmmword [r8 + 0x40], xmm0
movups xmmword [r8 + 0x50], xmm1
movdqu xmm0, xmmword [rdx + 0x30]
movdqu xmm1, xmm0
punpcklbw xmm0, xmm6
punpckhbw xmm1, xmm6
pmullw xmm0, xmm2
pmullw xmm1, xmm5
movups xmmword [r8 + 0x60], xmm0
movups xmmword [r8 + 0x70], xmm1
mov edx, dword [r13 + 0x45c4]
mov eax, edx
imul eax, r15d
shl eax, 3
cdqe
lea rcx, [rax + r14*8]
add rcx, qword [r13 + 0x45d0]
call qword [rsp + 0x48d8]
lea r8, [r14 + 1]
cmp rbx, r14
je 0x631f63e0
mov r14, r8
mov eax, dword [r13 + 0x45f8]
movsxd r10, dword [r13 + 0x45ac]
mov r11, qword [r13 + 0x45f0]
imul eax, r15d
add r10, 0xd2
shl r10, 6
lea rcx, [rbp + r10 + 0x48]
lea rdx, [rbp + r10 + 8]
add eax, r14d
shl eax, 6
cdqe
add rax, rax
lea r8, [r11 + rax]
cmp r8, rcx
jae 0x631f61f0
lea r9, [r11 + rax + 0x80]
cmp rdx, r9
jae 0x631f61f0
xor r11d, r11d
movzx eax, byte [rdx + r11]
imul ax, word [r8 + r11*2]
mov word [r8 + r11*2], ax
movzx r10d, byte [rdx + r11 + 1]
imul r10w, word [r8 + r11*2 + 2]
mov word [r8 + r11*2 + 2], r10w
movzx ecx, byte [rdx + r11 + 2]
imul cx, word [r8 + r11*2 + 4]
mov word [r8 + r11*2 + 4], cx
movzx r9d, byte [rdx + r11 + 3]
imul r9w, word [r8 + r11*2 + 6]
mov word [r8 + r11*2 + 6], r9w
movzx eax, byte [rdx + r11 + 4]
imul ax, word [r8 + r11*2 + 8]
mov word [r8 + r11*2 + 8], ax
movzx r10d, byte [rdx + r11 + 5]
imul r10w, word [r8 + r11*2 + 0xa]
mov word [r8 + r11*2 + 0xa], r10w
movzx ecx, byte [rdx + r11 + 6]
imul cx, word [r8 + r11*2 + 0xc]
mov word [r8 + r11*2 + 0xc], cx
movzx r9d, byte [rdx + r11 + 7]
imul r9w, word [r8 + r11*2 + 0xe]
mov word [r8 + r11*2 + 0xe], r9w
add r11, 8
cmp r11, 0x40
je 0x631f62a9
jmp 0x631f6337
add r15d, 1
cmp esi, r15d
jne 0x631f61e0
mov r12, qword [rsp + 0x170]
mov edx, dword [r12 + 8]
mov rbx, r12
add edi, 1
add r13, 0x60
cmp edi, edx
jl 0x631f61ab
mov dword [rsp + 0x4c], edx
jmp 0x631f5319
mov rbp, r13
jmp 0x631f5044
lea r14, str.bad_DC_huff
mov r12d, dword [rsi + 8]
mov rbp, r13
mov qword [0x63273660], r14
jmp 0x631f5044
mov rbp, r13
lea r13, str.bad_AC_huff
mov r12d, dword [rsi + 8]
mov qword [0x63273660], r13
jmp 0x631f5044
mov ebx, dword [rsp + rbp + 0x4718]
add r12d, 1
cmp r12d, ebx
jl 0x631f5622
mov r12d, dword [rsp + 0x48b8]
add qword [rsp + 0x68], 1
mov rbp, qword [rsp + 0x68]
cmp r12d, ebp
jg 0x631f55ef
mov r14d, dword [rsp + 0x48d0]
sub r14d, 1
mov dword [rsp + 0x48d0], r14d
test r14d, r14d
jle 0x631f69d0
add dword [rsp + 0x40], 1
mov eax, dword [rsp + 0x4700]
mov r9d, dword [rsp + 0x40]
cmp eax, r9d
jg 0x631f55cd
mov ecx, dword [rsp + 0x4704]
nop
add dword [rsp + 0x4c], 1
mov r10d, dword [rsp + 0x4c]
cmp r10d, ecx
jl 0x631f55b0
nop dword [rax + rax]
movzx eax, byte [rsp + 0x4898]
cmp al, 0xff
jne 0x631f52e0
mov rbx, qword [rsp + 0x170]
mov rax, qword [rbx + 0x10]
test rax, rax
je 0x631f6521
mov rcx, qword [rbx + 0x28]
call qword [rbx + 0x20]
test eax, eax
je 0x631f6535
mov r8d, dword [rbx + 0x30]
test r8d, r8d
je 0x631f52d0
mov r11, qword [rbx + 0xc0]
cmp qword [rbx + 0xb8], r11
jae 0x631f52d0
mov rbx, qword [rsp + 0x170]
mov r10, qword [rbx + 0xb8]
cmp r10, qword [rbx + 0xc0]
jae 0x631f6590
lea rbp, [r10 + 1]
mov qword [rbx + 0xb8], rbp
movzx edx, byte [r10]
cmp edx, 0xff
je 0x631f6820
test edx, edx
je 0x631f6500
lea r12, str.junk_before_marker
mov rbp, r13
mov qword [0x63273660], r12
mov r12d, dword [rbx + 8]
jmp 0x631f5044
mov ecx, dword [rbx + 0x30]
mov rax, qword [rbx + 0x10]
test ecx, ecx
je 0x631f6504
lea rsi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov r8d, dword [rbx + 0x34]
mov rdx, rsi
call rax
lea r9, [rbx + 0x39]
movq xmm0, r9
test eax, eax
jne 0x631f67f0
punpcklqdq xmm0, xmm0
mov dword [rbx + 0x30], 0
mov byte [rbx + 0x38], 0
movups xmmword [rbx + 0xb8], xmm0
mov rbx, qword [rsp + 0x170]
jmp 0x631f6500
movsxd rdx, dword [rsp + 0x48bc]
lea r11, [rdx + rdx*2]
mov rbp, rdx
shl r11, 5
mov esi, dword [rsp + r11 + 0x472c]
mov ebx, dword [rsp + r11 + 0x4730]
lea esi, [rsi + 7]
lea r14d, [rbx + 7]
mov r12d, esi
sar r14d, 3
sar r12d, 3
mov dword [rsp + 0x60], r14d
mov dword [rsp + 0x4c], r12d
test r14d, r14d
jle 0x631f64f8
lea r15d, [r12 - 1]
mov qword [rsp + 0x50], r11
lea r8, [r15*8 + 8]
mov qword [rsp + 0x40], r8
mov r9d, dword [rsp + 0x4c]
test r9d, r9d
jle 0x631f67cd
lea rax, [rsp + 0x178]
xor ebx, ebx
lea r14, [rsp + 0x48f0]
mov r12d, 0x7fffffff
lea rsi, [rsp + 0xb0]
add r14, qword [rsp + 0x50]
mov r15, rax
jmp 0x631f668f
add rbx, 8
cmp qword [rsp + 0x40], rbx
je 0x631f67cd
movsxd r10, dword [r14 - 0x1cc]
movsxd r8, dword [r14 - 0x1d4]
movsxd rcx, dword [r14 - 0x1d0]
mov dword [rsp + 0x28], ebp
imul r11, r10, 0x690
shl r8, 6
shl r10, 0xa
imul rdx, rcx, 0x690
lea r9, [r13 + r8 + 0x3488]
mov rcx, r13
lea rax, [r13 + r10 + 0x3588]
mov qword [rsp + 0x30], r9
mov r10, qword [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r8, [r15 + rdx]
lea r9, [r10 + r11]
mov rdx, rsi
call fcn.631f45f0
test eax, eax
je 0x631f5708
mov edx, dword [r14 - 0x1bc]
mov r8, rsi
mov r11d, edx
imul r11d, edi
shl r11d, 3
movsxd rcx, r11d
add rcx, rbx
add rcx, qword [r14 - 0x1b0]
call qword [rsp + 0x48d8]
mov ecx, dword [rsp + 0x48d0]
sub ecx, 1
mov dword [rsp + 0x48d0], ecx
test ecx, ecx
jg 0x631f6680
cmp dword [rsp + 0x4894], 0x17
jle 0x631f67e0
movzx edx, byte [rsp + 0x4898]
add edx, 0x30
cmp dl, 7
ja 0x631f64e8
mov r8d, dword [rsp + 0x48cc]
mov dword [rsp + 0x489c], 0
mov dword [rsp + 0x47e8], 0
test r8d, r8d
mov dword [rsp + 0x4788], 0
cmove r8d, r12d
mov byte [rsp + 0x4898], 0xff
add rbx, 8
mov dword [rsp + 0x4728], 0
mov qword [rsp + 0x4890], 0
mov dword [rsp + 0x48d0], r8d
mov dword [rsp + 0x48b4], 0
cmp qword [rsp + 0x40], rbx
jne 0x631f668f
add edi, 1
cmp dword [rsp + 0x60], edi
jne 0x631f6647
jmp 0x631f64e8
mov rcx, r13
call fcn.631f1730
jmp 0x631f6748
cdqe
movzx edx, byte [rbx + 0x38]
add rax, rsi
movq xmm5, rax
punpcklqdq xmm0, xmm5
movups xmmword [rbx + 0xb8], xmm0
mov rbx, qword [rsp + 0x170]
jmp 0x631f655c
mov r15, qword [rbx + 0xb8]
cmp r15, qword [rbx + 0xc0]
jae 0x631f6a60
lea r11, [r15 + 1]
mov qword [rbx + 0xb8], r11
movzx eax, byte [r15]
mov byte [rsp + 0x4898], al
jmp 0x631f52d8
mov dword [rsp + 0x48a8], 0
mov eax, dword [rsi + 0x30]
test eax, eax
je 0x631f6ad7
lea rbp, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov r8d, dword [rsi + 0x34]
mov rdx, rbp
call qword [rsi + 0x10]
lea r11, [rsi + 0x39]
test eax, eax
jne 0x631f6b07
mov dword [rsi + 0x30], 0
xor edx, edx
xor ebx, ebx
mov byte [rsi + 0x38], 0
mov qword [rsp + 0x40], r11
movq xmm6, r11
movhps xmm6, qword [rsp + 0x40]
movups xmmword [rsi + 0xb8], xmm6
jmp 0x631f6117
mov dword [rsp + 0x48a4], 0
mov edi, dword [rsi + 0x30]
test edi, edi
je 0x631f684f
lea rbx, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov r8d, dword [rsi + 0x34]
mov rdx, rbx
call qword [rsi + 0x10]
lea r9, [rsi + 0x39]
test eax, eax
jne 0x631f6af4
mov dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
mov qword [rsp + 0x40], r9
movq xmm4, r9
movhps xmm4, qword [rsp + 0x40]
movups xmmword [rsi + 0xb8], xmm4
mov rsi, qword [rsp + 0x170]
mov rcx, qword [rsi + 0xb8]
mov r10, qword [rsi + 0xc0]
jmp 0x631f60ec
mov edx, dword [rsi + 0x30]
test edx, edx
je 0x631f68ad
lea r12, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov r8d, dword [rsi + 0x34]
lea r15, [rsi + 0x39]
mov rdx, r12
call qword [rsi + 0x10]
test eax, eax
jne 0x631f6b27
mov dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
mov qword [rsp + 0x40], r15
movq xmm3, r15
movhps xmm3, qword [rsp + 0x40]
movups xmmword [rsi + 0xb8], xmm3
mov rsi, qword [rsp + 0x170]
mov r8, qword [rsi + 0xb8]
mov r10, qword [rsi + 0xc0]
jmp 0x631f60cd
mov r12d, dword [r12 + 4]
mov r11d, r12d
imul r11d, edi
imul r11d, dword [rsp + 0x50]
lea ecx, [r11 + 1]
call sub.msvcrt.dll_malloc
mov r13, rax
test rax, rax
je 0x631f6bc1
test r12d, r12d
je 0x631f5b5d
mov r10d, dword [rsp + 0x4c]
mov dword [rsp + 0x40], r10d
jmp 0x631f58f0
cmp dword [rsp + 0x4894], 0x17
jle 0x631f6ae7
movzx r15d, byte [rsp + 0x4898]
add r15d, 0x30
cmp r15b, 7
ja 0x631f64e8
mov edi, dword [rsp + 0x48cc]
mov r8d, 0x7fffffff
mov dword [rsp + 0x489c], 0
mov dword [rsp + 0x47e8], 0
test edi, edi
mov dword [rsp + 0x4788], 0
cmove edi, r8d
mov byte [rsp + 0x4898], 0xff
mov dword [rsp + 0x4728], 0
mov qword [rsp + 0x4890], 0
mov dword [rsp + 0x48d0], edi
mov dword [rsp + 0x48b4], 0
jmp 0x631f64ad
mov r14d, dword [rbx + 0x30]
test r14d, r14d
je 0x631f6ae0
lea rdi, [rbx + 0x38]
mov r8d, dword [rbx + 0x34]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + 0x10]
movsxd r8, eax
lea rax, [rbx + 0x39]
movq xmm2, rax
test r8d, r8d
jne 0x631f6bf0
punpcklqdq xmm2, xmm2
mov dword [rbx + 0x30], 0
xor eax, eax
mov byte [rbx + 0x38], 0
movups xmmword [rbx + 0xb8], xmm2
jmp 0x631f52e0
cdqe
movq xmm3, r8
movzx r9d, byte [r12 + 0x38]
add rax, r13
movq xmm4, rax
punpcklqdq xmm3, xmm4
movups xmmword [r12 + 0xb8], xmm3
jmp 0x631f522e
xor edx, edx
xor ebx, ebx
jmp 0x631f6117
xor eax, eax
jmp 0x631f52e0
mov rcx, r13
call fcn.631f1730
jmp 0x631f69de
cdqe
add rax, rbx
mov qword [rsp + 0x40], rax
movzx eax, byte [rsi + 0x38]
jmp 0x631f68ed
cdqe
add rax, rbp
mov qword [rsp + 0x40], rax
movzx eax, byte [rsi + 0x38]
mov edx, eax
sar eax, 4
mov ebx, edx
and edx, 0xf
and ebx, 0xf
jmp 0x631f6897
cdqe
add rax, r12
mov qword [rsp + 0x40], rax
movzx eax, byte [rsi + 0x38]
jmp 0x631f6955
mov r15d, dword [rsp + 0x4c]
mov rsi, qword [rsp + 0x58]
xor r14d, r14d
pxor xmm6, xmm6
test r15d, r15d
jle 0x631f6bc1
mov rcx, qword [rsi + 0x45d8]
test rcx, rcx
je 0x631f6b68
call fcn.63020868
movups xmmword [rsi + 0x45d0], xmm6
mov rcx, qword [rsi + 0x45e0]
test rcx, rcx
je 0x631f6b8f
call fcn.63020868
mov qword [rsi + 0x45e0], 0
mov qword [rsi + 0x45f0], 0
mov rcx, qword [rsi + 0x45e8]
test rcx, rcx
je 0x631f6bd4
call fcn.63020868
add r14d, 1
add rsi, 0x60
mov rdx, qword [rsp + 0x170]
mov qword [rsi + 0x4588], 0
cmp r14d, dword [rdx + 8]
jl 0x631f6b50
lea r13, str.outofmem
mov qword [0x63273660], r13
jmp 0x631f50c0
mov rax, qword [rsp + 0x170]
add r14d, 1
add rsi, 0x60
cmp dword [rax + 8], r14d
jg 0x631f6b50
jmp 0x631f6bc1
add r8, rdi
movzx eax, byte [rbx + 0x38]
movq xmm1, r8
punpcklqdq xmm2, xmm1
movups xmmword [rbx + 0xb8], xmm2
jmp 0x631f6843
mov dword [rsp + 0x48d0], 0x7fffffff
mov dword [rsp + 0x48b4], 0
jmp 0x631f5584
mov ebx, dword [rsp + 0x48cc]
mov dword [rsp + 0x489c], 0
mov dword [rsp + 0x47e8], 0
mov dword [rsp + 0x4788], 0
mov dword [rsp + 0x4728], 0
mov qword [rsp + 0x4890], 0
mov byte [rsp + 0x4898], 0xff
test ebx, ebx
je 0x631f7a04
mov dword [rsp + 0x48d0], ebx
mov dword [rsp + 0x48b4], 0
cmp dword [rsp + 0x48b8], 1
je 0x631f6e08
mov r12d, dword [rsp + 0x4704]
test r12d, r12d
jle 0x631f64f8
mov r9d, dword [rsp + 0x4700]
xor ebp, ebp
test r9d, r9d
jle 0x631f6df0
xor r12d, r12d
mov r8d, dword [rsp + 0x48b8]
mov qword [rsp + 0x40], 0
test r8d, r8d
jle 0x631f6db0
mov r14, qword [rsp + 0x40]
movsxd r15, dword [r13 + r14*4 + 0x474c]
lea rdi, [r15 + r15*2]
mov r14, r15
shl rdi, 5
mov eax, dword [rsp + rdi + 0x4718]
test eax, eax
jle 0x631f6d95
mov ecx, dword [rsp + rdi + 0x4714]
xor r15d, r15d
test ecx, ecx
jle 0x631f6d80
lea rbx, [rsp + 0x48f0]
xor esi, esi
add rbx, rdi
jmp 0x631f6d33
mov ecx, dword [rbx - 0x1dc]
add esi, 1
mov eax, dword [rbx - 0x1d8]
cmp ecx, esi
jle 0x631f6d80
imul eax, ebp
movsxd r9, dword [rbx - 0x1d0]
mov r10, qword [rbx - 0x190]
imul ecx, r12d
imul r11, r9, 0x690
mov r9d, r14d
add eax, r15d
imul eax, dword [rbx - 0x188]
add ecx, esi
lea r8, [r13 + r11 + 8]
add eax, ecx
mov rcx, r13
shl eax, 6
cdqe
lea rdx, [r10 + rax*2]
call fcn.631f4b70
test eax, eax
jne 0x631f6d20
jmp 0x631f5708
add r15d, 1
cmp r15d, eax
jl 0x631f6d08
mov r8d, dword [rsp + 0x48b8]
add qword [rsp + 0x40], 1
mov r14, qword [rsp + 0x40]
cmp r8d, r14d
jg 0x631f6cd7
nop dword [rax]
mov edi, dword [rsp + 0x48d0]
sub edi, 1
mov dword [rsp + 0x48d0], edi
test edi, edi
jle 0x631f7948
mov r9d, dword [rsp + 0x4700]
add r12d, 1
cmp r9d, r12d
jg 0x631f6cbd
mov r12d, dword [rsp + 0x4704]
nop word cs:[rax + rax]
add ebp, 1
cmp ebp, r12d
jl 0x631f6cb1
jmp 0x631f64e8
movsxd rbp, dword [rsp + 0x48bc]
lea r11, [rbp + rbp*2]
mov dword [rsp + 0x88], ebp
shl r11, 5
mov r10d, dword [rsp + r11 + 0x472c]
mov ecx, dword [rsp + r11 + 0x4730]
lea edx, [r10 + 7]
lea eax, [rcx + 7]
sar edx, 3
sar eax, 3
mov dword [rsp + 0x68], edx
mov dword [rsp + 0x8c], eax
test eax, eax
jle 0x631f64f8
mov dword [rsp + 0x60], 0
mov r15, r13
mov qword [rsp + 0x80], r11
mov r8d, dword [rsp + 0x68]
lea r13, [rsp + 0x48f0]
add r13, qword [rsp + 0x80]
mov r14, r15
mov dword [rsp + 0x40], 0
mov qword [rsp + 0x50], r13
test r8d, r8d
jg 0x631f6ef4
jmp 0x631f773b
movsxd r9, dword [rdi - 0x1d0]
mov rcx, r14
imul rdx, r9, 0x690
mov r9d, dword [rsp + 0x88]
lea r8, [r14 + rdx + 8]
mov rdx, r13
call fcn.631f4b70
test eax, eax
je 0x631f7870
mov ebx, dword [rsp + 0x48d0]
sub ebx, 1
mov dword [rsp + 0x48d0], ebx
test ebx, ebx
jle 0x631f70d0
add dword [rsp + 0x40], 1
mov r13d, dword [rsp + 0x40]
cmp dword [rsp + 0x68], r13d
je 0x631f7738
mov rdi, qword [rsp + 0x50]
mov eax, dword [rsp + 0x60]
movsxd rbx, dword [rsp + 0x48a4]
imul eax, dword [rdi - 0x188]
add eax, dword [rsp + 0x40]
mov r15, qword [rdi - 0x190]
shl eax, 6
cdqe
lea r13, [r15 + rax*2]
test ebx, ebx
je 0x631f6e98
mov r12d, dword [rsp + 0x48ac]
movsxd r9, dword [rdi - 0x1cc]
mov r15d, dword [rsp + 0x48b0]
mov ebp, dword [rsp + 0x48b4]
test r12d, r12d
jne 0x631f7288
test ebp, ebp
jne 0x631f76a8
mov r12, r9
lea rbp, [rsp + 0x48f0]
mov edi, dword [rsp + 0x4894]
shl r12, 0xa
lea rsi, [r14 + r12 + 0x3588]
imul r12, r9, 0x690
add r12, rbp
imul rbp, r9, 0x1a4
jmp 0x631f7008
mov r10d, dword [rsp + 0x4890]
mov r11d, r10d
shr r11d, 0x17
mov ecx, r11d
movsx r9d, word [rsi + rcx*2]
mov ecx, r9d
test r9d, r9d
je 0x631f7062
mov r8d, r9d
and ecx, 0xf
sar r9d, 8
sar r8d, 4
shl r10d, cl
sub edi, ecx
mov ecx, r15d
and r8d, 0xf
mov dword [rsp + 0x4890], r10d
lea r10, [0x632bdd40]
shl r9d, cl
add r8d, ebx
mov dword [rsp + 0x4894], edi
movsxd r11, r8d
lea ebx, [r8 + 1]
movzx eax, byte [r10 + r11]
mov word [r13 + rax*2], r9w
cmp dword [rsp + 0x48a8], ebx
jl 0x631f6ec6
cmp edi, 0xf
jg 0x631f6f90
mov rcx, r14
call fcn.631f1730
mov r10d, dword [rsp + 0x4890]
mov edi, dword [rsp + 0x4894]
mov r11d, r10d
shr r11d, 0x17
mov eax, r11d
movsx r9d, word [rsi + rax*2]
mov ecx, r9d
test r9d, r9d
jne 0x631f6fb3
cmp edi, 0xf
jg 0x631f7062
mov rcx, r14
call fcn.631f1730
mov r10d, dword [rsp + 0x4890]
mov edi, dword [rsp + 0x4894]
mov r11d, r10d
shr r11d, 0x17
movsxd rdx, r11d
movzx r8d, byte [rdx + r12 - 0x2d38]
cmp r8d, 0xff
je 0x631f71e0
add r8, r12
movzx ecx, byte [r8 - 0x2838]
cmp ecx, edi
jg 0x631f76c0
sub edi, ecx
shl r10d, cl
mov dword [rsp + 0x4894], edi
mov dword [rsp + 0x4890], r10d
movzx r10d, byte [r8 - 0x2938]
mov eax, r10d
sar eax, 4
and r10d, 0xf
jne 0x631f7160
cmp eax, 0xf
jne 0x631f78a8
add ebx, 0x10
jmp 0x631f6ffb
cmp dword [rsp + 0x4894], 0x17
jle 0x631f7278
movzx eax, byte [rsp + 0x4898]
lea esi, [rax + 0x30]
cmp sil, 7
ja 0x631f78d0
mov ebp, dword [rsp + 0x48cc]
mov r12d, 0x7fffffff
mov dword [rsp + 0x489c], 0
mov dword [rsp + 0x47e8], 0
test ebp, ebp
mov dword [rsp + 0x4788], 0
cmove ebp, r12d
mov byte [rsp + 0x4898], 0xff
mov dword [rsp + 0x4728], 0
mov qword [rsp + 0x4890], 0
mov dword [rsp + 0x48d0], ebp
mov dword [rsp + 0x48b4], 0
jmp 0x631f6edf
add eax, ebx
lea rdx, [0x632bdd40]
lea ebx, [rax + 1]
cdqe
movzx r8d, byte [rdx + rax]
cmp r10d, edi
jg 0x631f7678
mov eax, dword [rsp + 0x4890]
mov ecx, r10d
movsxd rdx, r10d
sub edi, r10d
lea r11, [0x632843a0]
lea r10, [0x63284400]
mov dword [rsp + 0x4894], edi
mov r9d, eax
sar eax, 0x1f
rol r9d, cl
not eax
and eax, dword [r10 + rdx*4]
mov ecx, r9d
mov r9d, dword [r11 + rdx*4]
mov r11d, r9d
not r11d
and r11d, ecx
and ecx, r9d
lea edx, [rax + rcx]
mov ecx, r15d
mov dword [rsp + 0x4890], r11d
shl edx, cl
mov word [r13 + r8*2], dx
jmp 0x631f6ffb
mov r11d, r10d
shr r11d, 0x10
cmp r11d, dword [r12 - 0x270c]
jb 0x631f7788
cmp r11d, dword [r12 - 0x2708]
jb 0x631f7820
cmp r11d, dword [r12 - 0x2704]
jb 0x631f7840
cmp r11d, dword [r12 - 0x2700]
jb 0x631f7860
cmp r11d, dword [r12 - 0x26fc]
jb 0x631f7898
cmp r11d, dword [r12 - 0x26f8]
jb 0x631f78e0
cmp r11d, dword [r12 - 0x26f4]
jb 0x631f78f0
lea ebx, [rdi - 0x10]
mov rbp, r14
mov dword [rsp + 0x4894], ebx
mov rdi, qword [rsp + 0x170]
lea r14, str.bad_huffman_code
mov qword [0x63273660], r14
mov r12d, dword [rdi + 8]
jmp 0x631f5044
mov rcx, r14
call fcn.631f1730
jmp 0x631f70de
mov r12d, 1
mov ecx, r15d
shl r12d, cl
mov word [rsp + 0x4c], r12w
test ebp, ebp
jne 0x631f7560
imul rdi, r9, 0x690
mov qword [rsp + 0x78], r13
mov r13d, dword [rsp + 0x4894]
lea r11, [rsp + 0x48f0]
imul r10, r9, 0x1a4
add rdi, r11
mov qword [rsp + 0x70], r10
cmp r13d, 0xf
jle 0x631f7465
nop word [rax + rax]
mov r8d, dword [rsp + 0x4890]
mov edx, r8d
shr edx, 0x17
movzx eax, byte [rdx + rdi - 0x2d38]
cmp eax, 0xff
je 0x631f74c8
add rax, rdi
movzx ecx, byte [rax - 0x2838]
cmp ecx, r13d
jg 0x631f76c0
shl r8d, cl
sub r13d, ecx
movzx r9d, byte [rax - 0x2938]
mov dword [rsp + 0x4890], r8d
mov dword [rsp + 0x4894], r13d
mov r15d, r9d
sar r15d, 4
and r9d, 0xf
mov ebp, r9d
jne 0x631f7480
cmp r15d, 0xf
je 0x631f7380
mov r8d, 1
mov ecx, r15d
shl r8d, cl
sub r8d, 1
mov dword [rsp + 0x48b4], r8d
test r15d, r15d
jne 0x631f7618
mov ebp, r15d
mov r15d, 0x40
nop word cs:[rax + rax]
mov ecx, dword [rsp + 0x48a8]
cmp ebx, ecx
jg 0x631f6ec6
movsxd r13, ebx
lea r8, [0x632bdd40]
lea r13, [r8 + r13]
jmp 0x631f73dc
mov r10d, dword [rsp + 0x4894]
test r10d, r10d
jle 0x631f7428
mov eax, dword [rsp + 0x4890]
sub r10d, 1
mov dword [rsp + 0x4894], r10d
lea r11d, [rax + rax]
mov dword [rsp + 0x4890], r11d
test eax, eax
js 0x631f7400
add r13, 1
cmp ebx, ecx
jg 0x631f6ec6
movzx edx, byte [r13]
mov rsi, qword [rsp + 0x78]
add ebx, 1
lea rsi, [rsi + rdx*2]
cmp word [rsi], 0
jne 0x631f73a0
test r15d, r15d
je 0x631f7448
sub r15d, 1
jmp 0x631f73d0
movzx r9d, word [rsi]
test word [rsp + 0x4c], r9w
jne 0x631f73d0
mov eax, r9d
lea r8d, [r9 + r12]
sub eax, r12d
test r9w, r9w
mov edx, eax
cmovg edx, r8d
mov word [rsi], dx
jmp 0x631f73d0
mov rcx, r14
call fcn.631f1730
mov r10d, dword [rsp + 0x4894]
mov ecx, dword [rsp + 0x48a8]
jmp 0x631f73ad
mov word [rsi], bp
cmp ebx, ecx
jg 0x631f6ec6
mov r13d, dword [rsp + 0x4894]
cmp r13d, 0xf
jg 0x631f72e0
mov rcx, r14
call fcn.631f1730
mov r13d, dword [rsp + 0x4894]
jmp 0x631f72e0
cmp ebp, 1
jne 0x631f76c0
test r13d, r13d
je 0x631f7540
movsx ebp, word [rsp + 0x4c]
sub r13d, 1
lea r11d, [r8 + r8]
mov dword [rsp + 0x4894], r13d
mov r13d, ebp
mov dword [rsp + 0x4890], r11d
neg r13d
test r8d, r8d
cmovns ebp, r13d
jmp 0x631f7380
mov r15d, r8d
shr r15d, 0x10
cmp dword [rdi - 0x270c], r15d
ja 0x631f76d0
cmp r15d, dword [rdi - 0x2708]
jb 0x631f7768
cmp r15d, dword [rdi - 0x2704]
jb 0x631f7778
cmp r15d, dword [rdi - 0x2700]
jb 0x631f77f0
cmp r15d, dword [rdi - 0x26fc]
jb 0x631f7830
cmp r15d, dword [rdi - 0x26f8]
jb 0x631f7850
cmp r15d, dword [rdi - 0x26f4]
jb 0x631f7888
sub r13d, 0x10
mov rbp, r14
mov dword [rsp + 0x4894], r13d
jmp 0x631f7256
mov rcx, r14
call fcn.631f1730
mov r8d, dword [rsp + 0x4890]
mov r13d, dword [rsp + 0x4894]
jmp 0x631f7492
mov r11d, dword [rsp + 0x48a8]
sub ebp, 1
mov dword [rsp + 0x48b4], ebp
cmp ebx, r11d
jg 0x631f6ec6
mov r15d, r12d
jmp 0x631f758d
add rbx, 1
cmp r11d, ebx
jl 0x631f6ec6
lea rbp, [0x632bdd40]
movzx esi, byte [rbp + rbx]
lea rdi, [r13 + rsi*2]
cmp word [rdi], 0
je 0x631f7580
mov r10d, dword [rsp + 0x4894]
test r10d, r10d
jle 0x631f75f8
mov ecx, dword [rsp + 0x4890]
sub r10d, 1
mov dword [rsp + 0x4894], r10d
lea r9d, [rcx + rcx]
mov dword [rsp + 0x4890], r9d
test ecx, ecx
jns 0x631f7580
movzx eax, word [rdi]
test r15w, ax
jne 0x631f7580
mov r8d, eax
lea edx, [rax + r12]
sub r8d, r12d
test ax, ax
cmovg r8d, edx
mov word [rdi], r8w
jmp 0x631f7580
mov rcx, r14
call fcn.631f1730
mov r10d, dword [rsp + 0x4894]
mov r11d, dword [rsp + 0x48a8]
jmp 0x631f75b1
cmp r15d, r13d
jg 0x631f7800
mov esi, dword [rsp + 0x4890]
movsxd r10, r15d
mov ecx, r15d
sub r13d, r15d
lea rax, [0x632843a0]
mov dword [rsp + 0x4894], r13d
mov r15d, 0x40
mov r11d, dword [rax + r10*4]
rol esi, cl
mov edx, esi
mov r9d, r11d
and edx, r11d
not r9d
add r8d, edx
and r9d, esi
mov dword [rsp + 0x48b4], r8d
mov dword [rsp + 0x4890], r9d
jmp 0x631f7380
mov rcx, r14
mov byte [rsp + 0x70], r8b
mov dword [rsp + 0x4c], r10d
call fcn.631f1730
movzx r8d, byte [rsp + 0x70]
mov r10d, dword [rsp + 0x4c]
mov edi, dword [rsp + 0x4894]
jmp 0x631f717c
sub ebp, 1
mov dword [rsp + 0x48b4], ebp
jmp 0x631f6ec6
mov rbp, r14
jmp 0x631f7256
mov r9d, 0xa
cmp r9d, r13d
jg 0x631f76c0
mov r10, qword [rsp + 0x70]
movsxd r11, r9d
mov ecx, 0x20
mov ebp, r8d
sub ecx, r9d
lea rsi, [0x632843a0]
sub r13d, r9d
lea rdx, [r11 + r10 + 0x820]
shr ebp, cl
mov ecx, r9d
and ebp, dword [rsi + r11*4]
add ebp, dword [rsp + rdx*4 + 0x184]
shl r8d, cl
mov dword [rsp + 0x4894], r13d
movsxd rax, ebp
mov dword [rsp + 0x4890], r8d
movzx r9d, byte [rdi + rax - 0x2938]
jmp 0x631f7332
mov r15, r14
add dword [rsp + 0x60], 1
mov edi, dword [rsp + 0x60]
cmp dword [rsp + 0x8c], edi
jne 0x631f6e63
movzx eax, byte [rsp + 0x4898]
mov r13, r15
jmp 0x631f64f0
mov r9d, 0xb
jmp 0x631f76d6
mov r9d, 0xc
jmp 0x631f76d6
mov eax, 0xa
cmp eax, edi
jg 0x631f76c0
mov ecx, 0x20
mov edx, r10d
movsxd r8, eax
sub edi, eax
sub ecx, eax
lea r9, [0x632843a0]
lea r11, [r8 + rbp + 0x820]
mov dword [rsp + 0x4894], edi
shr edx, cl
mov ecx, eax
and edx, dword [r9 + r8*4]
add edx, dword [rsp + r11*4 + 0x184]
shl r10d, cl
mov dword [rsp + 0x4890], r10d
movsxd r10, edx
movzx r10d, byte [r10 + r12 - 0x2938]
jmp 0x631f70aa
mov r9d, 0xd
jmp 0x631f76d6
mov rcx, r14
call fcn.631f1730
mov r8d, dword [rsp + 0x48b4]
mov r13d, dword [rsp + 0x4894]
jmp 0x631f7621
mov eax, 0xb
jmp 0x631f778d
mov r9d, 0xe
jmp 0x631f76d6
mov eax, 0xc
jmp 0x631f778d
mov r9d, 0xf
jmp 0x631f76d6
mov eax, 0xd
jmp 0x631f778d
mov rbp, r14
mov r14, qword [rsp + 0x170]
mov r12d, dword [r14 + 8]
jmp 0x631f5044
mov r9d, 0x10
jmp 0x631f76d6
mov eax, 0xe
jmp 0x631f778d
mov ebx, 1
mov ecx, eax
shl ebx, cl
mov dword [rsp + 0x48b4], ebx
test eax, eax
jne 0x631f7900
sub ebx, 1
mov dword [rsp + 0x48b4], ebx
jmp 0x631f6ec6
mov r13, r14
jmp 0x631f64f0
mov eax, 0xf
jmp 0x631f778d
mov eax, 0x10
jmp 0x631f778d
cmp eax, edi
jg 0x631f79d4
movsxd rbp, eax
lea r12, [0x632843a0]
mov ecx, eax
sub edi, eax
mov r13d, dword [r12 + rbp*4]
mov esi, dword [rsp + 0x4890]
mov dword [rsp + 0x4894], edi
mov r15d, r13d
rol esi, cl
not r15d
and r15d, esi
and esi, r13d
mov dword [rsp + 0x4890], r15d
add ebx, esi
jmp 0x631f78bc
cmp dword [rsp + 0x4894], 0x17
jle 0x631f79f7
movzx eax, byte [rsp + 0x4898]
lea r15d, [rax + 0x30]
cmp r15b, 7
ja 0x631f64f0
mov esi, dword [rsp + 0x48cc]
mov ebx, 0x7fffffff
mov dword [rsp + 0x489c], 0
mov dword [rsp + 0x47e8], 0
test esi, esi
mov dword [rsp + 0x4788], 0
cmove esi, ebx
mov byte [rsp + 0x4898], 0xff
mov dword [rsp + 0x4728], 0
mov qword [rsp + 0x4890], 0
mov dword [rsp + 0x48d0], esi
mov dword [rsp + 0x48b4], 0
jmp 0x631f6dc9
mov rcx, r14
mov dword [rsp + 0x4c], eax
call fcn.631f1730
mov ebx, dword [rsp + 0x48b4]
mov edi, dword [rsp + 0x4894]
mov eax, dword [rsp + 0x4c]
jmp 0x631f7908
mov rcx, r13
call fcn.631f1730
jmp 0x631f7956
mov dword [rsp + 0x48d0], 0x7fffffff
mov dword [rsp + 0x48b4], 0
jmp 0x631f6c88
mov rbx, qword [rsp + 0x58]
xor ebp, ebp
pxor xmm6, xmm6
jmp 0x631f7a8e
mov rcx, qword [rbx + 0x45d8]
test rcx, rcx
je 0x631f7a44
call fcn.63020868
movups xmmword [rbx + 0x45d0], xmm6
mov rcx, qword [rbx + 0x45e0]
test rcx, rcx
je 0x631f7a6b
call fcn.63020868
mov qword [rbx + 0x45e0], 0
mov qword [rbx + 0x45f0], 0
mov rcx, qword [rbx + 0x45e8]
test rcx, rcx
je 0x631f7a87
call fcn.63020868
mov qword [rbx + 0x45e8], 0
add ebp, 1
add rbx, 0x60
mov rdi, qword [rsp + 0x170]
cmp dword [rdi + 8], ebp
jg 0x631f7a2c
jmp 0x631f6bc1
xor r8d, r8d
jmp 0x631f5d54