Function at 0x6808fad0
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.6800cfe0
sub rsp, rax
movups xmmword [rsp + 0x48f0], xmm6
lea rdi, [0x6808df70]
lea rbx, [0x680a0f80]
movq xmm0, rdi
cmp dword [rsp + 0x4970], 4
mov qword [rsp + 0x4958], rdx
lea rdx, [0x6807c3b0]
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 0x6808fd50
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.68089030
test eax, eax
jne 0x6808fc58
nop word [rax + rax]
mov rsi, qword [rsp + 0x170]
mov r12d, dword [rsi + 8]
xor edi, edi
pxor xmm6, xmm6
test r12d, r12d
jle 0x6808fc30
mov rcx, qword [rbp + 0x45d8]
test rcx, rcx
je 0x6808fbd7
call sub.msvcrt.dll_free
movups xmmword [rbp + 0x45d0], xmm6
mov rcx, qword [rbp + 0x45e0]
test rcx, rcx
je 0x6808fbfe
call sub.msvcrt.dll_free
mov qword [rbp + 0x45e0], 0
mov qword [rbp + 0x45f0], 0
mov rcx, qword [rbp + 0x45e8]
test rcx, rcx
je 0x6808fc1a
call sub.msvcrt.dll_free
mov qword [rbp + 0x45e8], 0
mov rcx, qword [rsp + 0x170]
add edi, 1
add rbp, 0x60
cmp dword [rcx + 8], edi
jg 0x6808fbbf
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 0x6808fd70
mov byte [rsp + 0x4898], 0xff
movzx edx, al
cmp al, 0xd9
je 0x6808fe66
lea rbx, [rsp + 0x1bb8]
mov r13, rbp
mov qword [rsp + 0x58], rbx
nop dword [rax + rax]
cmp edx, 0xda
jne 0x6808fe30
mov rdi, qword [rsp + 0x170]
mov rbp, qword [rdi + 0xb8]
mov rcx, qword [rdi + 0xc0]
cmp rbp, rcx
jae 0x68090378
lea rsi, [rbp + 1]
mov qword [rdi + 0xb8], rsi
movzx r14d, byte [rbp]
shl r14d, 8
cmp rsi, rcx
jae 0x680903d3
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 0x68090310
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 0x6809081c
mov r12d, dword [rsi + 8]
cmp r12d, r9d
jge 0x680907a0
mov rbp, r13
lea r10, str.bad_SOS_component_count
mov qword [0x680b7420], r10
jmp 0x6808fbb4
lea r9, str.bad_req_comp
xor r13d, r13d
mov qword [0x680b7420], r9
jmp 0x6808fc33
mov r12, qword [rsp + 0x170]
mov rcx, qword [r12 + 0xb8]
cmp rcx, qword [r12 + 0xc0]
jae 0x68090b20
lea r10, [rcx + 1]
mov qword [r12 + 0xb8], r10
movzx r9d, byte [rcx]
cmp r9b, 0xff
jne 0x68090b6e
nop dword [rax + rax]
mov r14, qword [rsp + 0x170]
mov r11, qword [r14 + 0xb8]
cmp r11, qword [r14 + 0xc0]
jae 0x68090b80
lea rdx, [r11 + 1]
mov qword [r14 + 0xb8], rdx
movzx eax, byte [r11]
cmp al, 0xff
je 0x6808fdb0
jmp 0x6808fc70
mov ecx, dword [rbx + 0x30]
test ecx, ecx
je 0x6808fe28
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 0x68090858
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.6809ef80
test eax, eax
je 0x68090278
movzx eax, byte [rsp + 0x4898]
cmp al, 0xff
je 0x68090000
mov byte [rsp + 0x4898], 0xff
movzx edx, al
cmp al, 0xd9
jne 0x6808fc90
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 0x68090d08
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 0x68090aa0
mov dword [rsp + 0x40], 1
cmp r10d, 3
jne 0x68090aa0
mov qword [rsp + 0x58], rbp
lea r13d, [rdi + 3]
mov r14, rbp
xor r15d, r15d
lea rsi, [rsp + 0xb0]
jmp 0x6808ff3f
movabs r8, 0x200000001
cmp r9, r8
je 0x6808fff0
movabs rax, 0x100000002
cmp r9, rax
je 0x6808ffe0
movabs rdx, 0x200000002
cmp r9, rdx
je 0x68090300
lea r11, [0x680a0530]
mov qword [rsi], r11
nop dword [rax + rax]
add r15d, 1
add r14, 0x60
add rsi, 0x30
cmp r15d, dword [rsp + 0x40]
jge 0x68090430
mov rcx, r13
call sub.msvcrt.dll_malloc
mov qword [r14 + 0x45e8], rax
test rax, rax
je 0x680916aa
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 0x6808fee0
lea r8, [0x6807c3a0]
mov qword [rsi], r8
jmp 0x6808ff28
lea r9, [0x680a0930]
mov qword [rsi], r9
jmp 0x6808ff28
lea rcx, [0x680a10b0]
mov qword [rsi], rcx
jmp 0x6808ff28
mov rbx, qword [rsp + 0x170]
mov r10, qword [rbx + 0xb8]
cmp r10, qword [rbx + 0xc0]
jae 0x6808fde8
lea rbp, [r10 + 1]
mov qword [rbx + 0xb8], rbp
movzx edx, byte [r10]
cmp dl, 0xff
jne 0x6808fe28
nop dword [rax]
mov r12, qword [rsp + 0x170]
mov r15, qword [r12 + 0xb8]
cmp r15, qword [r12 + 0xc0]
jae 0x68090280
lea r8, [r15 + 1]
mov qword [r12 + 0xb8], r8
movzx eax, byte [r15]
cmp al, 0xff
je 0x68090038
jmp 0x6808fe58
test edi, edi
jne 0x68090ce0
test eax, eax
jne 0x68090ce0
test bl, bl
jne 0x68090ce0
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 0x6809177c
mov dword [rsp + 0x48d0], eax
mov dword [rsp + 0x48b4], 0
cmp dword [rsp + 0x48b8], 1
je 0x68091158
mov ecx, dword [rsp + 0x4704]
test ecx, ecx
jle 0x68091068
mov dword [rsp + 0x4c], 0
mov eax, dword [rsp + 0x4700]
test eax, eax
jle 0x68091040
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 0x68091000
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 0x68090fec
mov esi, dword [rsp + rbp + 0x4714]
xor r12d, r12d
test esi, esi
jle 0x68090fd7
lea rcx, [rsp + 0x48f0]
xor r15d, r15d
lea rdi, [rcx + rbp]
jmp 0x680901f3
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 0x68090fd0
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.6808f160
test eax, eax
jne 0x680901b0
mov rbp, r13
jmp 0x6808fba8
mov edx, dword [r12 + 0x30]
test edx, edx
je 0x6808fe30
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 0x680902e0
punpcklqdq xmm6, xmm6
mov byte [r12 + 0x38], 0
mov dword [r12 + 0x30], 0
movups xmmword [r12 + 0xb8], xmm6
jmp 0x6808fe30
add rdx, r14
movzx eax, byte [r12 + 0x38]
movq xmm0, rdx
punpcklqdq xmm6, xmm0
movups xmmword [r12 + 0xb8], xmm6
jmp 0x68090066
mov r10, qword [rsp + 0x48e8]
mov qword [rsi], r10
jmp 0x6808ff28
mov edx, dword [rdi + 0x30]
test edx, edx
je 0x680907c8
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 0x680907e0
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 0x6808fd3c
mov r14d, dword [rdi + 0x30]
test r14d, r14d
je 0x6808fcf1
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 0x68090840
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 0x6808fcd8
mov r8d, dword [rdi + 0x30]
test r8d, r8d
je 0x6809041b
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 0x68090828
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 0x6808fcf1
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 0x6809258f
test r12d, r12d
je 0x68090640
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 0x6809054a
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 0x68090504
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 0x680905b0
mov dword [rbx + 0x24], ebp
add rbx, 0x30
add rdi, 0x60
add r13, 8
cmp qword [rsp + 0x68], r13
jne 0x680904d8
mov rbx, qword [rsp + 0x170]
mov edi, dword [rbx]
mov rdx, qword [rsp + 0x90]
cmp r14d, 2
jle 0x680905f0
cmp dword [rbx + 8], 3
jne 0x68090710
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 0x6809062d
mov edi, dword [rbx]
jmp 0x680904a8
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 0x6809052d
movsxd r8, dword [rdi + 0x45c4]
add rsi, r8
mov qword [rbx + 0x10], rsi
jmp 0x6809052d
cmp r14d, 1
je 0x68090750
test edi, edi
je 0x68090591
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 0x68090600
add dword [rsp + 0x4c], r14d
add r15d, 1
cmp dword [rbx + 4], r15d
ja 0x680905a4
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 0x680906cd
nop dword [rax]
mov rcx, qword [rbp + 0x45d8]
test rcx, rcx
je 0x68090670
call sub.msvcrt.dll_free
movups xmmword [rbp + 0x45d0], xmm6
mov rcx, qword [rbp + 0x45e0]
test rcx, rcx
je 0x68090697
call sub.msvcrt.dll_free
mov qword [rbp + 0x45e0], 0
mov qword [rbp + 0x45f0], 0
mov rcx, qword [rbp + 0x45e8]
test rcx, rcx
je 0x68090780
call sub.msvcrt.dll_free
add r12d, 1
add rbp, 0x60
mov rbx, qword [rsp + 0x170]
mov qword [rbp + 0x4588], 0
cmp r12d, dword [rbx + 8]
jl 0x68090658
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 0x6808fc33
mov eax, dword [rbx + 8]
mov r11, qword [rsp + 0x4968]
mov dword [r11], eax
jmp 0x6808fc33
test edi, edi
je 0x68090591
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 0x68090720
jmp 0x68090591
test edi, edi
je 0x68090591
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 0x68090760
jmp 0x68090591
mov rbx, qword [rsp + 0x170]
add r12d, 1
add rbp, 0x60
cmp dword [rbx + 8], r12d
jg 0x68090658
jmp 0x680906cd
lea edi, [r9 + r9 + 6]
cmp edi, r14d
je 0x68090880
lea rbx, str.bad_SOS_len
mov rbp, r13
mov qword [0x680b7420], rbx
jmp 0x6808fbb4
mov dword [rsp + 0x48b8], 0
mov rbp, r13
mov r12d, dword [rdi + 8]
jmp 0x6808fd3c
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 0x6808fd2c
mov rbp, r13
jmp 0x6809036a
movzx r10d, byte [rdi + 0x38]
cdqe
add rax, r15
mov qword [rsp + 0x40], rax
add r14d, r10d
jmp 0x6809040a
lea rcx, [r12 + r14]
movzx r14d, byte [rdi + 0x38]
shl r14d, 8
jmp 0x680903b5
cdqe
movzx edx, byte [rbx + 0x38]
add rax, rsi
movq xmm4, rax
punpcklqdq xmm3, xmm4
movups xmmword [rbx + 0xb8], xmm3
jmp 0x6809002b
test r9d, r9d
je 0x68090c18
xor r14d, r14d
jmp 0x68090981
lea r12, [r11 + 1]
mov qword [rsi + 0xb8], r12
movzx ebx, byte [r11]
cmp r12, r15
jae 0x68090a04
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 0x68090ac0
cmp ebx, dword [rsp + 0x4710]
je 0x68090ad0
cmp r10d, 1
je 0x68090ae0
cmp ebx, dword [rsp + 0x4770]
je 0x68090af0
cmp r10d, 2
je 0x68090b00
cmp ebx, dword [rsp + 0x47d0]
je 0x68090b10
cmp r10d, 3
je 0x68090bf8
cmp dword [rsp + 0x4830], ebx
je 0x68090c08
mov r12d, 4
cmp r10d, r12d
je 0x68090f88
movsxd r11, r12d
sar eax, 4
lea rbx, [r11 + r11*2]
shl rbx, 5
mov dword [rsp + rbx + 0x4720], eax
cmp eax, 3
jg 0x68090f90
mov ebp, r8d
and ebp, 0xf
and r8d, 0xc
mov dword [rsp + rbx + 0x4724], ebp
jne 0x68090fb0
mov dword [r13 + r14*4 + 0x474c], r12d
add r14, 1
cmp dword [rsp + 0x48b8], r14d
jle 0x68090c18
mov r11, qword [rsi + 0xb8]
mov r15, qword [rsi + 0xc0]
cmp r11, r15
jb 0x68090898
mov ebx, dword [rsi + 0x30]
test ebx, ebx
je 0x68090a60
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 0x68090a70
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 0x680908b0
mov eax, dword [rsi + 0x30]
test eax, eax
je 0x68092610
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 0x68090a88
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 0x680908c4
xor eax, eax
xor r8d, r8d
jmp 0x680908c4
lea rax, [rbp + rbx]
movzx ebx, byte [rsi + 0x38]
mov qword [rsp + 0x40], rax
jmp 0x680909d4
cdqe
add rax, rdi
mov qword [rsp + 0x40], rax
movzx eax, byte [rsi + 0x38]
mov r8d, eax
jmp 0x68090a3c
mov r9d, dword [rsp + 0x4c]
test r9d, r9d
jle 0x680914f8
mov dword [rsp + 0x40], r9d
jmp 0x6808fec7
xor r12d, r12d
jmp 0x68090929
xor r12d, r12d
jmp 0x68090932
mov r12d, 1
jmp 0x68090929
mov r12d, 1
jmp 0x68090932
mov r12d, 2
jmp 0x68090929
mov r12d, 2
jmp 0x68090932
mov esi, dword [r12 + 0x30]
test esi, esi
je 0x68090b6e
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 0x68091620
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 0x6808fc7b
mov edx, dword [r14 + 0x30]
test edx, edx
je 0x6808fc7b
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 0x68090bd0
movq xmm2, rdi
mov dword [r14 + 0x30], 0
punpcklqdq xmm2, xmm2
mov byte [r14 + 0x38], 0
movups xmmword [r14 + 0xb8], xmm2
jmp 0x6808fc7b
add rdx, r15
movq xmm6, rdi
movzx eax, byte [r14 + 0x38]
movq xmm0, rdx
punpcklqdq xmm6, xmm0
movups xmmword [r14 + 0xb8], xmm6
jmp 0x6808fddb
mov r12d, 3
jmp 0x68090929
mov r12d, 3
jmp 0x68090932
mov rax, qword [rsi + 0xb8]
mov r10, qword [rsi + 0xc0]
cmp rax, r10
jae 0x68091490
lea r8, [rax + 1]
mov qword [rsi + 0xb8], r8
movzx eax, byte [rax]
mov dword [rsp + 0x48a4], eax
cmp r8, r10
jae 0x68091428
lea rcx, [r8 + 1]
mov qword [rsi + 0xb8], rcx
movzx eax, byte [r8]
mov dword [rsp + 0x48a8], eax
cmp rcx, r10
jae 0x680913ca
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 0x68090070
cmp edi, 0x3f
jg 0x68090ce0
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 0x68090ce0
cmp bl, 0xd
jbe 0x68091797
nop dword [rax]
mov r11, qword [rsp + 0x170]
mov rbp, r13
lea r13, str.bad_SOS
mov qword [0x680b7420], r13
mov r12d, dword [r11 + 8]
jmp 0x6808fbb4
mov edx, ecx
test ecx, ecx
jle 0x6808fe89
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 0x68090f6d
test r9d, r9d
jle 0x68090f65
xor r15d, r15d
lea r12d, [r9 - 1]
nop
mov ebx, r12d
xor r14d, r14d
jmp 0x68090e4d
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 0x68090f50
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 0x68090d60
lea r9, [r11 + rax + 0x80]
cmp rdx, r9
jae 0x68090d60
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 0x68090e19
jmp 0x68090ea7
add r15d, 1
cmp esi, r15d
jne 0x68090d50
mov r12, qword [rsp + 0x170]
mov edx, dword [r12 + 8]
mov rbx, r12
add edi, 1
add r13, 0x60
cmp edi, edx
jl 0x68090d1b
mov dword [rsp + 0x4c], edx
jmp 0x6808fe89
mov rbp, r13
jmp 0x6808fbb4
lea r14, str.bad_DC_huff
mov r12d, dword [rsi + 8]
mov rbp, r13
mov qword [0x680b7420], r14
jmp 0x6808fbb4
mov rbp, r13
lea r13, str.bad_AC_huff
mov r12d, dword [rsi + 8]
mov qword [0x680b7420], r13
jmp 0x6808fbb4
mov ebx, dword [rsp + rbp + 0x4718]
add r12d, 1
cmp r12d, ebx
jl 0x68090192
mov r12d, dword [rsp + 0x48b8]
add qword [rsp + 0x68], 1
mov rbp, qword [rsp + 0x68]
cmp r12d, ebp
jg 0x6809015f
mov r14d, dword [rsp + 0x48d0]
sub r14d, 1
mov dword [rsp + 0x48d0], r14d
test r14d, r14d
jle 0x68091540
add dword [rsp + 0x40], 1
mov eax, dword [rsp + 0x4700]
mov r9d, dword [rsp + 0x40]
cmp eax, r9d
jg 0x6809013d
mov ecx, dword [rsp + 0x4704]
nop
add dword [rsp + 0x4c], 1
mov r10d, dword [rsp + 0x4c]
cmp r10d, ecx
jl 0x68090120
nop dword [rax + rax]
movzx eax, byte [rsp + 0x4898]
cmp al, 0xff
jne 0x6808fe50
mov rbx, qword [rsp + 0x170]
mov rax, qword [rbx + 0x10]
test rax, rax
je 0x68091091
mov rcx, qword [rbx + 0x28]
call qword [rbx + 0x20]
test eax, eax
je 0x680910a5
mov r8d, dword [rbx + 0x30]
test r8d, r8d
je 0x6808fe40
mov r11, qword [rbx + 0xc0]
cmp qword [rbx + 0xb8], r11
jae 0x6808fe40
mov rbx, qword [rsp + 0x170]
mov r10, qword [rbx + 0xb8]
cmp r10, qword [rbx + 0xc0]
jae 0x68091100
lea rbp, [r10 + 1]
mov qword [rbx + 0xb8], rbp
movzx edx, byte [r10]
cmp edx, 0xff
je 0x68091390
test edx, edx
je 0x68091070
lea r12, str.junk_before_marker
mov rbp, r13
mov qword [0x680b7420], r12
mov r12d, dword [rbx + 8]
jmp 0x6808fbb4
mov ecx, dword [rbx + 0x30]
mov rax, qword [rbx + 0x10]
test ecx, ecx
je 0x68091074
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 0x68091360
punpcklqdq xmm0, xmm0
mov dword [rbx + 0x30], 0
mov byte [rbx + 0x38], 0
movups xmmword [rbx + 0xb8], xmm0
mov rbx, qword [rsp + 0x170]
jmp 0x68091070
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 0x68091068
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 0x6809133d
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 0x680911ff
add rbx, 8
cmp qword [rsp + 0x40], rbx
je 0x6809133d
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.6808f160
test eax, eax
je 0x68090278
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 0x680911f0
cmp dword [rsp + 0x4894], 0x17
jle 0x68091350
movzx edx, byte [rsp + 0x4898]
add edx, 0x30
cmp dl, 7
ja 0x68091058
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 0x680911ff
add edi, 1
cmp dword [rsp + 0x60], edi
jne 0x680911b7
jmp 0x68091058
mov rcx, r13
call fcn.6808c2a0
jmp 0x680912b8
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 0x680910cc
mov r15, qword [rbx + 0xb8]
cmp r15, qword [rbx + 0xc0]
jae 0x680915d0
lea r11, [r15 + 1]
mov qword [rbx + 0xb8], r11
movzx eax, byte [r15]
mov byte [rsp + 0x4898], al
jmp 0x6808fe48
mov dword [rsp + 0x48a8], 0
mov eax, dword [rsi + 0x30]
test eax, eax
je 0x68091647
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 0x68091677
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 0x68090c87
mov dword [rsp + 0x48a4], 0
mov edi, dword [rsi + 0x30]
test edi, edi
je 0x680913bf
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 0x68091664
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 0x68090c5c
mov edx, dword [rsi + 0x30]
test edx, edx
je 0x6809141d
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 0x68091697
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 0x68090c3d
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 0x68091731
test r12d, r12d
je 0x680906cd
mov r10d, dword [rsp + 0x4c]
mov dword [rsp + 0x40], r10d
jmp 0x68090460
cmp dword [rsp + 0x4894], 0x17
jle 0x68091657
movzx r15d, byte [rsp + 0x4898]
add r15d, 0x30
cmp r15b, 7
ja 0x68091058
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 0x6809101d
mov r14d, dword [rbx + 0x30]
test r14d, r14d
je 0x68091650
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 0x68091760
punpcklqdq xmm2, xmm2
mov dword [rbx + 0x30], 0
xor eax, eax
mov byte [rbx + 0x38], 0
movups xmmword [rbx + 0xb8], xmm2
jmp 0x6808fe50
cdqe
movq xmm3, r8
movzx r9d, byte [r12 + 0x38]
add rax, r13
movq xmm4, rax
punpcklqdq xmm3, xmm4
movups xmmword [r12 + 0xb8], xmm3
jmp 0x6808fd9e
xor edx, edx
xor ebx, ebx
jmp 0x68090c87
xor eax, eax
jmp 0x6808fe50
mov rcx, r13
call fcn.6808c2a0
jmp 0x6809154e
cdqe
add rax, rbx
mov qword [rsp + 0x40], rax
movzx eax, byte [rsi + 0x38]
jmp 0x6809145d
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 0x68091407
cdqe
add rax, r12
mov qword [rsp + 0x40], rax
movzx eax, byte [rsi + 0x38]
jmp 0x680914c5
mov r15d, dword [rsp + 0x4c]
mov rsi, qword [rsp + 0x58]
xor r14d, r14d
pxor xmm6, xmm6
test r15d, r15d
jle 0x68091731
mov rcx, qword [rsi + 0x45d8]
test rcx, rcx
je 0x680916d8
call sub.msvcrt.dll_free
movups xmmword [rsi + 0x45d0], xmm6
mov rcx, qword [rsi + 0x45e0]
test rcx, rcx
je 0x680916ff
call sub.msvcrt.dll_free
mov qword [rsi + 0x45e0], 0
mov qword [rsi + 0x45f0], 0
mov rcx, qword [rsi + 0x45e8]
test rcx, rcx
je 0x68091744
call sub.msvcrt.dll_free
add r14d, 1
add rsi, 0x60
mov rdx, qword [rsp + 0x170]
mov qword [rsi + 0x4588], 0
cmp r14d, dword [rdx + 8]
jl 0x680916c0
lea r13, str.outofmem
mov qword [0x680b7420], r13
jmp 0x6808fc30
mov rax, qword [rsp + 0x170]
add r14d, 1
add rsi, 0x60
cmp dword [rax + 8], r14d
jg 0x680916c0
jmp 0x68091731
add r8, rdi
movzx eax, byte [rbx + 0x38]
movq xmm1, r8
punpcklqdq xmm2, xmm1
movups xmmword [rbx + 0xb8], xmm2
jmp 0x680913b3
mov dword [rsp + 0x48d0], 0x7fffffff
mov dword [rsp + 0x48b4], 0
jmp 0x680900f4
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 0x68092574
mov dword [rsp + 0x48d0], ebx
mov dword [rsp + 0x48b4], 0
cmp dword [rsp + 0x48b8], 1
je 0x68091978
mov r12d, dword [rsp + 0x4704]
test r12d, r12d
jle 0x68091068
mov r9d, dword [rsp + 0x4700]
xor ebp, ebp
test r9d, r9d
jle 0x68091960
xor r12d, r12d
mov r8d, dword [rsp + 0x48b8]
mov qword [rsp + 0x40], 0
test r8d, r8d
jle 0x68091920
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 0x68091905
mov ecx, dword [rsp + rdi + 0x4714]
xor r15d, r15d
test ecx, ecx
jle 0x680918f0
lea rbx, [rsp + 0x48f0]
xor esi, esi
add rbx, rdi
jmp 0x680918a3
mov ecx, dword [rbx - 0x1dc]
add esi, 1
mov eax, dword [rbx - 0x1d8]
cmp ecx, esi
jle 0x680918f0
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.6808f6e0
test eax, eax
jne 0x68091890
jmp 0x68090278
add r15d, 1
cmp r15d, eax
jl 0x68091878
mov r8d, dword [rsp + 0x48b8]
add qword [rsp + 0x40], 1
mov r14, qword [rsp + 0x40]
cmp r8d, r14d
jg 0x68091847
nop dword [rax]
mov edi, dword [rsp + 0x48d0]
sub edi, 1
mov dword [rsp + 0x48d0], edi
test edi, edi
jle 0x680924b8
mov r9d, dword [rsp + 0x4700]
add r12d, 1
cmp r9d, r12d
jg 0x6809182d
mov r12d, dword [rsp + 0x4704]
nop word cs:[rax + rax]
add ebp, 1
cmp ebp, r12d
jl 0x68091821
jmp 0x68091058
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 0x68091068
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 0x68091a64
jmp 0x680922ab
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.6808f6e0
test eax, eax
je 0x680923e0
mov ebx, dword [rsp + 0x48d0]
sub ebx, 1
mov dword [rsp + 0x48d0], ebx
test ebx, ebx
jle 0x68091c40
add dword [rsp + 0x40], 1
mov r13d, dword [rsp + 0x40]
cmp dword [rsp + 0x68], r13d
je 0x680922a8
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 0x68091a08
mov r12d, dword [rsp + 0x48ac]
movsxd r9, dword [rdi - 0x1cc]
mov r15d, dword [rsp + 0x48b0]
mov ebp, dword [rsp + 0x48b4]
test r12d, r12d
jne 0x68091df8
test ebp, ebp
jne 0x68092218
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 0x68091b78
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 0x68091bd2
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, [0x681207a0]
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 0x68091a36
cmp edi, 0xf
jg 0x68091b00
mov rcx, r14
call fcn.6808c2a0
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 0x68091b23
cmp edi, 0xf
jg 0x68091bd2
mov rcx, r14
call fcn.6808c2a0
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 0x68091d50
add r8, r12
movzx ecx, byte [r8 - 0x2838]
cmp ecx, edi
jg 0x68092230
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 0x68091cd0
cmp eax, 0xf
jne 0x68092418
add ebx, 0x10
jmp 0x68091b6b
cmp dword [rsp + 0x4894], 0x17
jle 0x68091de8
movzx eax, byte [rsp + 0x4898]
lea esi, [rax + 0x30]
cmp sil, 7
ja 0x68092440
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 0x68091a4f
add eax, ebx
lea rdx, [0x681207a0]
lea ebx, [rax + 1]
cdqe
movzx r8d, byte [rdx + rax]
cmp r10d, edi
jg 0x680921e8
mov eax, dword [rsp + 0x4890]
mov ecx, r10d
movsxd rdx, r10d
sub edi, r10d
lea r11, [0x680bf420]
lea r10, [0x680bf480]
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 0x68091b6b
mov r11d, r10d
shr r11d, 0x10
cmp r11d, dword [r12 - 0x270c]
jb 0x680922f8
cmp r11d, dword [r12 - 0x2708]
jb 0x68092390
cmp r11d, dword [r12 - 0x2704]
jb 0x680923b0
cmp r11d, dword [r12 - 0x2700]
jb 0x680923d0
cmp r11d, dword [r12 - 0x26fc]
jb 0x68092408
cmp r11d, dword [r12 - 0x26f8]
jb 0x68092450
cmp r11d, dword [r12 - 0x26f4]
jb 0x68092460
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 [0x680b7420], r14
mov r12d, dword [rdi + 8]
jmp 0x6808fbb4
mov rcx, r14
call fcn.6808c2a0
jmp 0x68091c4e
mov r12d, 1
mov ecx, r15d
shl r12d, cl
mov word [rsp + 0x4c], r12w
test ebp, ebp
jne 0x680920d0
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 0x68091fd5
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 0x68092038
add rax, rdi
movzx ecx, byte [rax - 0x2838]
cmp ecx, r13d
jg 0x68092230
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 0x68091ff0
cmp r15d, 0xf
je 0x68091ef0
mov r8d, 1
mov ecx, r15d
shl r8d, cl
sub r8d, 1
mov dword [rsp + 0x48b4], r8d
test r15d, r15d
jne 0x68092188
mov ebp, r15d
mov r15d, 0x40
nop word cs:[rax + rax]
mov ecx, dword [rsp + 0x48a8]
cmp ebx, ecx
jg 0x68091a36
movsxd r13, ebx
lea r8, [0x681207a0]
lea r13, [r8 + r13]
jmp 0x68091f4c
mov r10d, dword [rsp + 0x4894]
test r10d, r10d
jle 0x68091f98
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 0x68091f70
add r13, 1
cmp ebx, ecx
jg 0x68091a36
movzx edx, byte [r13]
mov rsi, qword [rsp + 0x78]
add ebx, 1
lea rsi, [rsi + rdx*2]
cmp word [rsi], 0
jne 0x68091f10
test r15d, r15d
je 0x68091fb8
sub r15d, 1
jmp 0x68091f40
movzx r9d, word [rsi]
test word [rsp + 0x4c], r9w
jne 0x68091f40
mov eax, r9d
lea r8d, [r9 + r12]
sub eax, r12d
test r9w, r9w
mov edx, eax
cmovg edx, r8d
mov word [rsi], dx
jmp 0x68091f40
mov rcx, r14
call fcn.6808c2a0
mov r10d, dword [rsp + 0x4894]
mov ecx, dword [rsp + 0x48a8]
jmp 0x68091f1d
mov word [rsi], bp
cmp ebx, ecx
jg 0x68091a36
mov r13d, dword [rsp + 0x4894]
cmp r13d, 0xf
jg 0x68091e50
mov rcx, r14
call fcn.6808c2a0
mov r13d, dword [rsp + 0x4894]
jmp 0x68091e50
cmp ebp, 1
jne 0x68092230
test r13d, r13d
je 0x680920b0
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 0x68091ef0
mov r15d, r8d
shr r15d, 0x10
cmp dword [rdi - 0x270c], r15d
ja 0x68092240
cmp r15d, dword [rdi - 0x2708]
jb 0x680922d8
cmp r15d, dword [rdi - 0x2704]
jb 0x680922e8
cmp r15d, dword [rdi - 0x2700]
jb 0x68092360
cmp r15d, dword [rdi - 0x26fc]
jb 0x680923a0
cmp r15d, dword [rdi - 0x26f8]
jb 0x680923c0
cmp r15d, dword [rdi - 0x26f4]
jb 0x680923f8
sub r13d, 0x10
mov rbp, r14
mov dword [rsp + 0x4894], r13d
jmp 0x68091dc6
mov rcx, r14
call fcn.6808c2a0
mov r8d, dword [rsp + 0x4890]
mov r13d, dword [rsp + 0x4894]
jmp 0x68092002
mov r11d, dword [rsp + 0x48a8]
sub ebp, 1
mov dword [rsp + 0x48b4], ebp
cmp ebx, r11d
jg 0x68091a36
mov r15d, r12d
jmp 0x680920fd
add rbx, 1
cmp r11d, ebx
jl 0x68091a36
lea rbp, [0x681207a0]
movzx esi, byte [rbp + rbx]
lea rdi, [r13 + rsi*2]
cmp word [rdi], 0
je 0x680920f0
mov r10d, dword [rsp + 0x4894]
test r10d, r10d
jle 0x68092168
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 0x680920f0
movzx eax, word [rdi]
test r15w, ax
jne 0x680920f0
mov r8d, eax
lea edx, [rax + r12]
sub r8d, r12d
test ax, ax
cmovg r8d, edx
mov word [rdi], r8w
jmp 0x680920f0
mov rcx, r14
call fcn.6808c2a0
mov r10d, dword [rsp + 0x4894]
mov r11d, dword [rsp + 0x48a8]
jmp 0x68092121
cmp r15d, r13d
jg 0x68092370
mov esi, dword [rsp + 0x4890]
movsxd r10, r15d
mov ecx, r15d
sub r13d, r15d
lea rax, [0x680bf420]
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 0x68091ef0
mov rcx, r14
mov byte [rsp + 0x70], r8b
mov dword [rsp + 0x4c], r10d
call fcn.6808c2a0
movzx r8d, byte [rsp + 0x70]
mov r10d, dword [rsp + 0x4c]
mov edi, dword [rsp + 0x4894]
jmp 0x68091cec
sub ebp, 1
mov dword [rsp + 0x48b4], ebp
jmp 0x68091a36
mov rbp, r14
jmp 0x68091dc6
mov r9d, 0xa
cmp r9d, r13d
jg 0x68092230
mov r10, qword [rsp + 0x70]
movsxd r11, r9d
mov ecx, 0x20
mov ebp, r8d
sub ecx, r9d
lea rsi, [0x680bf420]
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 0x68091ea2
mov r15, r14
add dword [rsp + 0x60], 1
mov edi, dword [rsp + 0x60]
cmp dword [rsp + 0x8c], edi
jne 0x680919d3
movzx eax, byte [rsp + 0x4898]
mov r13, r15
jmp 0x68091060
mov r9d, 0xb
jmp 0x68092246
mov r9d, 0xc
jmp 0x68092246
mov eax, 0xa
cmp eax, edi
jg 0x68092230
mov ecx, 0x20
mov edx, r10d
movsxd r8, eax
sub edi, eax
sub ecx, eax
lea r9, [0x680bf420]
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 0x68091c1a
mov r9d, 0xd
jmp 0x68092246
mov rcx, r14
call fcn.6808c2a0
mov r8d, dword [rsp + 0x48b4]
mov r13d, dword [rsp + 0x4894]
jmp 0x68092191
mov eax, 0xb
jmp 0x680922fd
mov r9d, 0xe
jmp 0x68092246
mov eax, 0xc
jmp 0x680922fd
mov r9d, 0xf
jmp 0x68092246
mov eax, 0xd
jmp 0x680922fd
mov rbp, r14
mov r14, qword [rsp + 0x170]
mov r12d, dword [r14 + 8]
jmp 0x6808fbb4
mov r9d, 0x10
jmp 0x68092246
mov eax, 0xe
jmp 0x680922fd
mov ebx, 1
mov ecx, eax
shl ebx, cl
mov dword [rsp + 0x48b4], ebx
test eax, eax
jne 0x68092470
sub ebx, 1
mov dword [rsp + 0x48b4], ebx
jmp 0x68091a36
mov r13, r14
jmp 0x68091060
mov eax, 0xf
jmp 0x680922fd
mov eax, 0x10
jmp 0x680922fd
cmp eax, edi
jg 0x68092544
movsxd rbp, eax
lea r12, [0x680bf420]
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 0x6809242c
cmp dword [rsp + 0x4894], 0x17
jle 0x68092567
movzx eax, byte [rsp + 0x4898]
lea r15d, [rax + 0x30]
cmp r15b, 7
ja 0x68091060
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 0x68091939
mov rcx, r14
mov dword [rsp + 0x4c], eax
call fcn.6808c2a0
mov ebx, dword [rsp + 0x48b4]
mov edi, dword [rsp + 0x4894]
mov eax, dword [rsp + 0x4c]
jmp 0x68092478
mov rcx, r13
call fcn.6808c2a0
jmp 0x680924c6
mov dword [rsp + 0x48d0], 0x7fffffff
mov dword [rsp + 0x48b4], 0
jmp 0x680917f8
mov rbx, qword [rsp + 0x58]
xor ebp, ebp
pxor xmm6, xmm6
jmp 0x680925fe
mov rcx, qword [rbx + 0x45d8]
test rcx, rcx
je 0x680925b4
call sub.msvcrt.dll_free
movups xmmword [rbx + 0x45d0], xmm6
mov rcx, qword [rbx + 0x45e0]
test rcx, rcx
je 0x680925db
call sub.msvcrt.dll_free
mov qword [rbx + 0x45e0], 0
mov qword [rbx + 0x45f0], 0
mov rcx, qword [rbx + 0x45e8]
test rcx, rcx
je 0x680925f7
call sub.msvcrt.dll_free
mov qword [rbx + 0x45e8], 0
add ebp, 1
add rbx, 0x60
mov rdi, qword [rsp + 0x170]
cmp dword [rdi + 8], ebp
jg 0x6809259c
jmp 0x68091731
xor r8d, r8d
jmp 0x680908c4