Function at 0x140044bdc
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
mov eax, 0x8968
call fcn.1401b8800
sub rsp, rax
mov r15, r9
mov r14, r8
mov r12, rdx
mov rsi, rcx
mov rax, qword [rsp + 0x89d0]
mov qword [rax], 8
and dword [rax + 8], 0
lea r13, [rcx + 0xc0]
mov rcx, qword [rcx + 0xc0]
mov rax, qword [rsi + 0xc8]
cmp rcx, rax
jae 0x140044c3a
lea rdx, [rcx + 1]
mov qword [r13], rdx
mov cl, byte [rcx]
jmp 0x140044c98
cmp dword [rsi + 0x30], 0
je 0x140044c71
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140044c78
cdqe
add rax, rdi
mov cl, byte [rdi]
jmp 0x140044c86
xor ebx, ebx
jmp 0x140044eed
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor ecx, ecx
mov qword [rsi + 0xc8], rax
lea rdx, [rsi + 0x39]
mov qword [rsi + 0xc0], rdx
xor ebx, ebx
cmp cl, 0x47
jne 0x140044eed
cmp rdx, rax
jae 0x140044cb4
lea rbp, [rdx + 1]
mov qword [r13], rbp
mov cl, byte [rdx]
jmp 0x140044d0f
cmp dword [rsi + 0x30], 0
je 0x140044eed
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140044cef
cdqe
add rax, rdi
mov cl, byte [rdi]
jmp 0x140044cfd
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor ecx, ecx
mov qword [rsi + 0xc8], rax
lea rbp, [rsi + 0x39]
mov qword [rsi + 0xc0], rbp
cmp cl, 0x49
jne 0x140044eed
cmp rbp, rax
jae 0x140044d2a
lea rdx, [rbp + 1]
mov qword [r13], rdx
mov cl, byte [rbp]
jmp 0x140044d85
cmp dword [rsi + 0x30], 0
je 0x140044eed
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140044d65
cdqe
add rax, rdi
mov cl, byte [rdi]
jmp 0x140044d73
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor ecx, ecx
mov qword [rsi + 0xc8], rax
lea rdx, [rsi + 0x39]
mov qword [rsi + 0xc0], rdx
cmp cl, 0x46
jne 0x140044eed
cmp rdx, rax
jae 0x140044d9f
lea rbp, [rdx + 1]
mov qword [r13], rbp
mov cl, byte [rdx]
jmp 0x140044dfa
cmp dword [rsi + 0x30], 0
je 0x140044eed
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140044dda
cdqe
add rax, rdi
mov cl, byte [rdi]
jmp 0x140044de8
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor ecx, ecx
mov qword [rsi + 0xc8], rax
lea rbp, [rsi + 0x39]
mov qword [rsi + 0xc0], rbp
cmp cl, 0x38
jne 0x140044eed
cmp rbp, rax
jae 0x140044e15
lea rcx, [rbp + 1]
mov qword [r13], rcx
mov dl, byte [rbp]
jmp 0x140044e70
cmp dword [rsi + 0x30], 0
je 0x140044eed
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140044e50
cdqe
add rax, rdi
mov dl, byte [rdi]
jmp 0x140044e5e
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor edx, edx
mov qword [rsi + 0xc8], rax
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp dl, 0x39
je 0x140044e7d
movzx edx, dl
cmp edx, 0x37
jne 0x140044eed
cmp rcx, rax
jae 0x140044e8e
lea rax, [rcx + 1]
mov qword [r13], rax
mov al, byte [rcx]
jmp 0x140044ee6
cmp dword [rsi + 0x30], 0
je 0x140044eed
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140044ec6
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140044ed4
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsi + 0xc8], rcx
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
xor ebx, ebx
cmp al, 0x61
sete bl
lea rax, [rsi + 0xc8]
mov qword [rsp + 0x38], rax
mov rdi, qword [rsi + 0xd0]
mov rbp, qword [rsi + 0xd8]
mov qword [rsi + 0xc0], rdi
mov qword [rsi + 0xc8], rbp
test ebx, ebx
je 0x140044f49
lea rcx, [rsp + 0xf0]
mov r8d, 0x8870
xor edx, edx
call fcn.1401afe80
cmp rdi, rbp
jae 0x14004538b
lea rcx, [rdi + 1]
mov rbx, r13
mov qword [r13], rcx
mov al, byte [rdi]
jmp 0x140046899
mov qword [rsp + 0x58], r15
mov rcx, rsi
call fcn.140049c20
mov r15, qword [rsi + 0xd0]
mov rbp, qword [rsi + 0xd8]
mov qword [rsi + 0xc0], r15
mov qword [rsi + 0xc8], rbp
cmp eax, 0x38425053
jne 0x1400453ce
mov rcx, rsi
call fcn.140049c20
cmp eax, 0x38425053
jne 0x140048a89
mov rcx, rsi
call fcn.140049c44
cmp eax, 1
jne 0x140048a89
mov rcx, rsi
mov edx, 6
call fcn.140049a81
mov rcx, rsi
call fcn.140049c44
cmp eax, 0x10
ja 0x140048a89
mov edi, eax
mov qword [rsp + 0x70], r14
mov rcx, rsi
call fcn.140049c20
mov ebp, eax
mov rcx, rsi
call fcn.140049c20
xor r14d, r14d
cmp ebp, 0x4000
jg 0x140049063
mov r15d, eax
cmp eax, 0x4000
jg 0x140049063
mov rcx, rsi
call fcn.140049c44
mov ebx, eax
cmp bx, 0x10
je 0x14004500e
cmp ebx, 8
jne 0x140048a89
mov rcx, rsi
call fcn.140049c44
cmp eax, 3
jne 0x140048a89
mov rcx, rsi
call fcn.140049c20
mov rcx, rsi
mov edx, eax
call fcn.140049a81
mov rcx, rsi
call fcn.140049c20
mov rcx, rsi
mov edx, eax
call fcn.140049a81
mov rcx, rsi
call fcn.140049c20
mov rcx, rsi
mov edx, eax
call fcn.140049a81
mov rcx, rsi
call fcn.140049c44
cmp eax, 1
ja 0x140048a89
mov dword [rsp + 0x48], eax
xor r14d, r14d
mov ecx, 4
mov edx, r15d
mov r8d, ebp
xor r9d, r9d
call fcn.140049750
test eax, eax
je 0x140049063
mov eax, r15d
imul eax, ebp
mov qword [rsp + 0x40], rax
lea eax, [rax*4]
movsxd rcx, eax
call fcn.14019ef94
test rax, rax
je 0x140048a89
mov r14, rax
mov eax, edi
mov qword [rsp + 0x98], rax
cmp dword [rsp + 0x48], 0
mov qword [rsp + 0x50], r14
mov dword [rsp + 0x90], ebp
mov dword [rsp + 0x88], r15d
mov dword [rsp + 0xa8], edi
je 0x140048b7a
imul ebp, edi
add ebp, ebp
mov rcx, rsi
mov edx, ebp
call fcn.140049a81
mov rbx, r14
lea r14, [rsi + 0x38]
lea rax, [rsi + 0x39]
mov qword [rsp + 0x48], rax
xor ecx, ecx
mov rax, qword [rsp + 0x40]
test eax, eax
mov edx, 0
cmovg edx, eax
mov qword [rsp + 0x60], rdx
mov qword [rsp + 0x68], rbx
cmp rcx, qword [rsp + 0x98]
mov qword [rsp + 0x78], rcx
jae 0x14004534c
mov r15, qword [rsp + 0x40]
test r15d, r15d
mov rbx, qword [rsp + 0x38]
jle 0x14004536f
mov rax, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x78]
lea rbp, [rax + rcx]
xor eax, eax
mov edi, r15d
mov dword [rsp + 0x80], eax
mov rdx, qword [r13]
mov rax, qword [rbx]
cmp rdx, rax
jae 0x140045173
mov rcx, r13
lea r8, [rdx + 1]
mov qword [r13], r8
mov dl, byte [rdx]
jmp 0x1400451d4
cmp dword [rsi + 0x30], 0
je 0x1400451b1
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, r14
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400451b6
cdqe
add rax, r14
mov dl, byte [r14]
mov rbx, qword [rsp + 0x38]
mov r8, qword [rsp + 0x48]
jmp 0x1400451cd
xor r15d, r15d
jmp 0x1400451fa
and dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
xor edx, edx
mov r8, qword [rsp + 0x48]
mov rax, r8
mov rbx, qword [rsp + 0x38]
mov qword [rbx], rax
mov qword [r13], r8
cmp dl, 0x80
jne 0x1400451e5
mov eax, dword [rsp + 0x80]
jmp 0x14004533f
movzx r15d, dl
test dl, dl
js 0x140045297
cmp edi, r15d
jbe 0x140048a7f
inc r15d
mov edi, r15d
mov rax, qword [r13]
cmp rax, qword [rbx]
jae 0x140045218
mov rdx, r13
lea rcx, [rax + 1]
mov qword [r13], rcx
mov al, byte [rax]
jmp 0x140045279
cmp dword [rsi + 0x30], 0
je 0x140045257
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, r14
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x14004525b
movsxd rcx, eax
add rcx, r14
mov al, byte [r14]
mov rbx, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x48]
jmp 0x140045272
xor eax, eax
jmp 0x140045279
and dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
xor eax, eax
mov rdx, qword [rsp + 0x48]
mov rcx, rdx
mov rbx, qword [rsp + 0x38]
mov qword [rbx], rcx
mov qword [r13], rdx
mov byte [rbp], al
add rbp, 4
dec edi
jne 0x140045200
mov eax, dword [rsp + 0x80]
add eax, r15d
jmp 0x14004533a
mov ecx, 0x101
sub ecx, r15d
cmp ecx, edi
ja 0x140048a7f
cmp r8, rax
jae 0x1400452b9
lea rax, [r8 + 1]
mov qword [r13], rax
mov al, byte [r8]
jmp 0x14004531e
cmp dword [rsi + 0x30], 0
je 0x1400452fa
mov edi, ecx
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, r14
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400452fe
movsxd rcx, eax
add rcx, r14
mov al, byte [r14]
mov rbx, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x48]
jmp 0x140045315
xor eax, eax
jmp 0x14004531e
and dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
xor eax, eax
mov rdx, qword [rsp + 0x48]
mov rcx, rdx
mov rbx, qword [rsp + 0x38]
mov qword [rbx], rcx
mov qword [r13], rdx
mov ecx, edi
add r15d, 0xfffffeff
mov byte [rbp], al
add rbp, 4
inc r15d
jne 0x140045325
mov eax, dword [rsp + 0x80]
add eax, ecx
mov r15, qword [rsp + 0x40]
mov edi, r15d
sub edi, eax
jg 0x140045151
jmp 0x14004536f
cmp rcx, 3
sete al
cmp dword [rsp + 0x40], 0
jle 0x14004536f
neg al
xor ecx, ecx
mov rdx, qword [rsp + 0x68]
mov byte [rdx + rcx*4], al
inc rcx
cmp dword [rsp + 0x60], ecx
jne 0x14004535e
mov rcx, qword [rsp + 0x78]
inc rcx
inc qword [rsp + 0x68]
cmp rcx, 4
jne 0x140045118
jmp 0x140048d07
cmp dword [rsi + 0x30], 0
je 0x14004684c
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046876
movsxd rbp, eax
add rbp, rdi
mov al, byte [rdi]
jmp 0x140046884
mov qword [rsp + 0x48], r13
mov qword [rsp + 0x80], r12
mov qword [rsp + 0x70], r14
mov ecx, 1
mov edx, 0x4888
call fcn.14019edd8
test rax, rax
je 0x140046858
mov rdi, rax
mov qword [rax], rsi
lea r13, [0x14004a3be]
mov qword [rax + 0x4870], r13
lea r14, [0x14004a7cc]
mov qword [rax + 0x4878], r14
lea r12, [0x14004a8e7]
mov qword [rax + 0x4880], r12
mov rcx, rax
mov edx, 1
call fcn.140049d51
mov ebx, eax
mov r15, qword [rsi + 0xd0]
mov rbp, qword [rsi + 0xd8]
mov qword [rsi + 0xc0], r15
mov qword [rsi + 0xc8], rbp
mov rcx, rdi
call fcn.14019ec78
test ebx, ebx
je 0x140046858
mov ecx, 1
mov edx, 0x4888
call fcn.14019edd8
test rax, rax
je 0x140048a89
mov rcx, rax
mov qword [rax], rsi
mov qword [rax + 0x4870], r13
mov qword [rax + 0x4878], r14
mov qword [rax + 0x4880], r12
and dword [rsi + 8], 0
mov eax, 0x46d8
xorps xmm0, xmm0
movups xmmword [rcx + rax], xmm0
add rax, 0x60
cmp rax, 0x4858
jne 0x1400454a2
and dword [rcx + 0x4868], 0
mov qword [rsp + 0x38], rcx
xor edx, edx
call fcn.140049d51
test eax, eax
je 0x140048e4d
mov rdi, qword [rsp + 0x38]
mov rcx, rdi
call fcn.14004a9a8
lea rcx, [rdi + 0x1a48]
mov qword [rsp + 0x68], rcx
lea rcx, [rdi + 8]
mov qword [rsp + 0x60], rcx
lea rcx, [rdi + 0x46a0]
mov qword [rsp + 0x48], rcx
lea rcx, [rdi + 0x2074]
mov qword [rsp + 0x98], rcx
cmp al, 0xda
je 0x140045536
movzx edx, al
cmp edx, 0xdc
je 0x140045565
cmp edx, 0xd9
je 0x1400474ea
mov rcx, rdi
call fcn.14004aadd
test eax, eax
jne 0x14004558c
jmp 0x1400475e5
mov rcx, qword [rdi]
call fcn.140049c44
mov ebx, eax
mov rbp, qword [rdi]
mov rax, qword [rbp + 0xc0]
cmp rax, qword [rbp + 0xc8]
jae 0x140045599
lea rcx, [rax + 1]
mov qword [rbp + 0xc0], rcx
mov al, byte [rax]
jmp 0x1400455f5
mov rcx, qword [rdi]
call fcn.140049c44
mov esi, eax
mov rcx, qword [rdi]
call fcn.140049c44
cmp esi, 4
jne 0x140047adc
mov rcx, qword [rdi]
cmp eax, dword [rcx + 4]
jne 0x140047ae8
mov rcx, rdi
call fcn.14004a9a8
jmp 0x14004550a
cmp dword [rbp + 0x30], 0
je 0x1400455d1
mov r8d, dword [rbp + 0x34]
lea rsi, [rbp + 0x38]
mov rcx, qword [rbp + 0x28]
mov rdx, rsi
call qword [rbp + 0x10]
mov ecx, dword [rbp + 0xc0]
sub ecx, dword [rbp + 0xd0]
add dword [rbp + 0xb8], ecx
test eax, eax
je 0x1400455d5
movsxd rcx, eax
add rcx, rsi
mov al, byte [rsi]
jmp 0x1400455e3
xor eax, eax
jmp 0x1400455f5
and dword [rbp + 0x30], 0
lea rcx, [rbp + 0x39]
mov byte [rbp + 0x38], 0
xor eax, eax
mov qword [rbp + 0xc8], rcx
lea rcx, [rbp + 0x39]
mov qword [rbp + 0xc0], rcx
movzx eax, al
mov dword [rdi + 0x4854], eax
lea ecx, [rax - 5]
cmp cl, 0xfc
jb 0x140047350
mov rbp, qword [rdi]
cmp dword [rbp + 8], eax
jl 0x140047350
add eax, eax
add eax, 6
cmp ebx, eax
jne 0x140047af4
xor ebx, ebx
mov rax, qword [rbp + 0xc0]
mov rcx, qword [rbp + 0xc8]
cmp rax, rcx
jae 0x14004564b
lea rdx, [rax + 1]
mov qword [rbp + 0xc0], rdx
mov r14b, byte [rax]
mov rax, rdx
jmp 0x1400456ba
cmp dword [rbp + 0x30], 0
je 0x140045683
mov r8d, dword [rbp + 0x34]
lea rsi, [rbp + 0x38]
mov rcx, qword [rbp + 0x28]
mov rdx, rsi
call qword [rbp + 0x10]
mov ecx, dword [rbp + 0xc0]
sub ecx, dword [rbp + 0xd0]
add dword [rbp + 0xb8], ecx
test eax, eax
je 0x140045688
cdqe
add rax, rsi
mov r14b, byte [rsi]
jmp 0x140045697
xor r14d, r14d
jmp 0x1400456ba
and dword [rbp + 0x30], 0
lea rax, [rbp + 0x39]
mov byte [rbp + 0x38], 0
xor r14d, r14d
mov qword [rbp + 0xc8], rax
lea rax, [rbp + 0x39]
mov qword [rbp + 0xc0], rax
mov rbp, qword [rdi]
mov rax, qword [rbp + 0xc0]
mov rcx, qword [rbp + 0xc8]
cmp rax, rcx
jae 0x1400456cf
lea rcx, [rax + 1]
mov qword [rbp + 0xc0], rcx
mov r8b, byte [rax]
jmp 0x140045730
cmp dword [rbp + 0x30], 0
je 0x140045707
mov r8d, dword [rbp + 0x34]
lea rsi, [rbp + 0x38]
mov rcx, qword [rbp + 0x28]
mov rdx, rsi
call qword [rbp + 0x10]
mov ecx, dword [rbp + 0xc0]
sub ecx, dword [rbp + 0xd0]
add dword [rbp + 0xb8], ecx
test eax, eax
je 0x14004570c
cdqe
add rax, rsi
mov r8b, byte [rsi]
jmp 0x14004571b
xor r8d, r8d
jmp 0x140045730
and dword [rbp + 0x30], 0
lea rax, [rbp + 0x39]
mov byte [rbp + 0x38], 0
xor r8d, r8d
mov qword [rbp + 0xc8], rax
lea rax, [rbp + 0x39]
mov qword [rbp + 0xc0], rax
mov rbp, qword [rdi]
mov edx, dword [rbp + 8]
mov edi, 0
test edx, edx
cmovg edi, edx
jle 0x14004575e
movzx esi, r14b
mov rax, qword [rsp + 0x48]
xor ecx, ecx
cmp dword [rax], esi
je 0x14004575c
inc rcx
add rax, 0x60
cmp rdi, rcx
jne 0x14004574a
jmp 0x14004575e
mov edi, ecx
cmp edi, edx
je 0x140048e4d
movzx eax, r8b
mov edx, eax
shr edx, 4
mov ecx, edi
imul rcx, rcx, 0x60
mov rsi, qword [rsp + 0x38]
mov dword [rsi + rcx + 0x46b0], edx
cmp al, 0x3f
ja 0x140046e0a
and eax, 0xf
mov dword [rsi + rcx + 0x46b4], eax
cmp eax, 3
ja 0x140046e16
mov dword [rsi + rbx*4 + 0x4858], edi
inc rbx
movsxd rax, dword [rsi + 0x4854]
cmp rbx, rax
mov rdi, rsi
jl 0x140045625
mov rax, qword [rbp + 0xc0]
mov rcx, qword [rbp + 0xc8]
cmp rax, rcx
jae 0x1400457de
lea rbx, [rax + 1]
mov qword [rbp + 0xc0], rbx
mov dl, byte [rax]
mov rax, rbx
jmp 0x14004584a
cmp dword [rbp + 0x30], 0
je 0x140045815
mov r8d, dword [rbp + 0x34]
lea rsi, [rbp + 0x38]
mov rcx, qword [rbp + 0x28]
mov rdx, rsi
call qword [rbp + 0x10]
mov ecx, dword [rbp + 0xc0]
sub ecx, dword [rbp + 0xd0]
add dword [rbp + 0xb8], ecx
test eax, eax
je 0x140045819
cdqe
add rax, rsi
mov dl, byte [rsi]
jmp 0x140045827
xor edx, edx
jmp 0x14004584a
and dword [rbp + 0x30], 0
lea rax, [rbp + 0x39]
mov byte [rbp + 0x38], 0
xor edx, edx
mov qword [rbp + 0xc8], rax
lea rax, [rbp + 0x39]
mov qword [rbp + 0xc0], rax
mov rbp, qword [rdi]
mov rax, qword [rbp + 0xc0]
mov rcx, qword [rbp + 0xc8]
movzx edx, dl
mov dword [rdi + 0x4834], edx
cmp rax, rcx
jae 0x14004586a
lea rbx, [rax + 1]
mov qword [rbp + 0xc0], rbx
mov dl, byte [rax]
mov rax, rbx
jmp 0x1400458d6
cmp dword [rbp + 0x30], 0
je 0x1400458a1
mov r8d, dword [rbp + 0x34]
lea rsi, [rbp + 0x38]
mov rcx, qword [rbp + 0x28]
mov rdx, rsi
call qword [rbp + 0x10]
mov ecx, dword [rbp + 0xc0]
sub ecx, dword [rbp + 0xd0]
add dword [rbp + 0xb8], ecx
test eax, eax
je 0x1400458a5
cdqe
add rax, rsi
mov dl, byte [rsi]
jmp 0x1400458b3
xor edx, edx
jmp 0x1400458d6
and dword [rbp + 0x30], 0
lea rax, [rbp + 0x39]
mov byte [rbp + 0x38], 0
xor edx, edx
mov qword [rbp + 0xc8], rax
lea rax, [rbp + 0x39]
mov qword [rbp + 0xc0], rax
mov rbp, qword [rdi]
mov rax, qword [rbp + 0xc0]
mov rcx, qword [rbp + 0xc8]
movzx edx, dl
mov dword [rdi + 0x4838], edx
cmp rax, rcx
jae 0x1400458f3
lea rcx, [rax + 1]
mov qword [rbp + 0xc0], rcx
mov al, byte [rax]
jmp 0x14004594f
cmp dword [rbp + 0x30], 0
je 0x14004592b
mov r8d, dword [rbp + 0x34]
lea rsi, [rbp + 0x38]
mov rcx, qword [rbp + 0x28]
mov rdx, rsi
call qword [rbp + 0x10]
mov ecx, dword [rbp + 0xc0]
sub ecx, dword [rbp + 0xd0]
add dword [rbp + 0xb8], ecx
test eax, eax
je 0x14004592f
movsxd rcx, eax
add rcx, rsi
mov al, byte [rsi]
jmp 0x14004593d
xor eax, eax
jmp 0x14004594f
and dword [rbp + 0x30], 0
lea rcx, [rbp + 0x39]
mov byte [rbp + 0x38], 0
xor eax, eax
mov qword [rbp + 0xc8], rcx
lea rcx, [rbp + 0x39]
mov qword [rbp + 0xc0], rcx
movzx ecx, al
mov edx, ecx
shr edx, 4
mov dword [rdi + 0x483c], edx
and ecx, 0xf
mov dword [rdi + 0x4840], ecx
cmp dword [rdi + 0x4830], 0
mov edx, dword [rdi + 0x4834]
je 0x1400459a7
cmp edx, 0x3f
jg 0x1400484a1
mov ebp, dword [rdi + 0x4838]
cmp ebp, 0x3f
jg 0x1400484a1
cmp edx, ebp
jg 0x1400484a1
cmp al, 0xdf
ja 0x1400484a1
cmp ecx, 0xd
jbe 0x1400459c9
jmp 0x1400484a1
test edx, edx
jne 0x1400484a1
cmp al, 0xf
ja 0x1400484a1
test ecx, ecx
jne 0x1400484a1
mov dword [rdi + 0x4838], 0x3f
mov rcx, rdi
call fcn.14004b6e6
cmp dword [rdi + 0x4830], 0
mov eax, dword [rdi + 0x4854]
je 0x140046225
cmp eax, 1
jne 0x14004638a
movsxd rax, dword [rdi + 0x4858]
mov qword [rsp + 0xe8], rax
imul rax, rax, 0x60
mov edx, dword [rdi + rax + 0x46bc]
mov ecx, dword [rdi + rax + 0x46c0]
mov qword [rsp + 0xe0], rdx
lea ebp, [rdx + 7]
sar ebp, 3
lea ebx, [rcx + 7]
sar ebx, 3
test ebp, ebp
mov edx, 0
cmovle ebp, edx
mov dword [rsp + 0xa4], ebp
test ebx, ebx
cmovle ebx, edx
mov dword [rsp + 0xd8], ebx
test ecx, ecx
jle 0x140046699
mov rcx, qword [rsp + 0x38]
add rax, rcx
add rax, 0x46f0
mov qword [rsp + 0xa8], rax
mov dword [rsp + 0x88], 0
cmp dword [rsp + 0xe0], 0
mov rdi, qword [rsp + 0x38]
mov rcx, qword [rsp + 0xa8]
jle 0x140046203
xor edx, edx
mov eax, dword [rcx + 8]
imul eax, dword [rsp + 0x88]
add eax, edx
shl eax, 6
movsxd r15, eax
add r15, r15
add r15, qword [rcx]
movsxd r14, dword [rdi + 0x4834]
test r14, r14
mov dword [rsp + 0x90], edx
je 0x140045b9b
movsxd rcx, dword [rcx - 0x3c]
imul rax, rcx, 0x690
mov qword [rsp + 0x50], rax
add rax, rdi
add rax, 0x1a48
mov qword [rsp + 0x78], rax
cmp dword [rdi + 0x483c], 0
mov r13d, dword [rdi + 0x4840]
mov eax, dword [rdi + 0x4844]
je 0x140045bce
test eax, eax
je 0x140045be3
mov esi, 0x10000
mov ecx, r13d
shl esi, cl
dec eax
mov dword [rdi + 0x4844], eax
cmp r14d, dword [rdi + 0x4838]
jg 0x140045eb5
sar esi, 0x10
mov ebx, esi
neg ebx
lea rax, [0x1401e2f30]
movzx ebp, byte [r14 + rax]
cmp word [r15 + rbp*2], 0
mov rdi, qword [rsp + 0x38]
je 0x140045b83
mov eax, dword [rdi + 0x4824]
test eax, eax
jg 0x140045b50
mov rcx, rdi
call fcn.14004bbb5
mov eax, dword [rdi + 0x4824]
test eax, eax
jle 0x140045b83
mov ecx, dword [rdi + 0x4820]
lea edx, [rcx + rcx]
mov dword [rdi + 0x4820], edx
dec eax
mov dword [rdi + 0x4824], eax
test ecx, ecx
jns 0x140045b83
movsx eax, word [r15 + rbp*2]
test esi, eax
jne 0x140045b83
test ax, ax
mov ecx, ebx
cmovg ecx, esi
add ecx, eax
mov word [r15 + rbp*2], cx
lea rax, [r14 + 1]
movsxd rcx, dword [rdi + 0x4838]
cmp r14, rcx
mov r14, rax
jl 0x140045b1b
jmp 0x140045eb5
movsxd rax, dword [rcx - 0x40]
imul rax, rax, 0x690
lea r8, [rdi + rax]
add r8, 8
mov rcx, rdi
mov rdx, r15
mov r9, qword [rsp + 0xe8]
call fcn.14004bd3e
test eax, eax
jne 0x140045eb5
jmp 0x140048e4d
test eax, eax
je 0x140045f1e
dec eax
mov dword [rdi + 0x4844], eax
jmp 0x140045eb5
mov eax, 0x10000
mov ecx, r13d
shl eax, cl
sar eax, 0x10
mov dword [rsp + 0x40], eax
neg eax
mov dword [rsp + 0xdc], eax
mov edx, dword [rdi + 0x4824]
mov rax, qword [rsp + 0x98]
mov rcx, qword [rsp + 0x50]
lea r13, [rax + rcx]
cmp edx, 0xf
mov rdi, qword [rsp + 0x38]
jg 0x140045c26
mov rcx, rdi
call fcn.14004bbb5
mov r8d, dword [rdi + 0x4820]
mov rax, r8
shr rax, 0x17
mov rcx, qword [rsp + 0x78]
movzx eax, byte [rcx + rax]
cmp rax, 0xff
je 0x140045c78
mov rcx, qword [rsp + 0x50]
add rcx, rdi
movzx ecx, byte [rax + rcx + 0x1f48]
mov edx, dword [rdi + 0x4824]
sub edx, ecx
jl 0x140048e2c
shl r8d, cl
mov dword [rdi + 0x4820], r8d
mov dword [rdi + 0x4824], edx
jmp 0x140045cff
mov eax, r8d
shr eax, 0x10
xor ebp, ebp
mov rcx, rbp
inc rbp
cmp eax, dword [r13 + rcx*4]
jae 0x140045c80
mov edx, dword [rdi + 0x4824]
cmp ebp, 8
je 0x140048e23
lea rax, [rbp + 9]
cmp edx, eax
jl 0x140048e2c
mov cl, 0x17
sub cl, bpl
mov ebx, r8d
shr ebx, cl
mov ecx, eax
lea rsi, [0x1401e2f90]
and ebx, dword [rsi + rcx*4]
mov rsi, rdi
mov rdi, qword [rsp + 0x50]
add rdi, rsi
add ebx, dword [rdi + rcx*4 + 0x2094]
cmp ebx, 0xff
ja 0x140048e2c
mov edi, edx
sub edi, ebp
add edi, 0xfffffff7
sub edx, ebp
mov ecx, eax
shl r8d, cl
add edx, 0xfffffff7
mov dword [rsi + 0x4824], edi
mov dword [rsi + 0x4820], r8d
mov eax, ebx
mov rdi, rsi
mov rcx, qword [rsp + 0x50]
add rcx, rdi
movzx eax, byte [rax + rcx + 0x1e48]
mov ecx, eax
and ecx, 0xf
mov rbx, rax
shr rbx, 4
cmp ecx, 1
je 0x140045dac
test ecx, ecx
jne 0x140048e2c
xor esi, esi
mov r12d, 0xf
cmp al, 0xef
ja 0x140045df3
mov ebp, 0xffffffff
mov ecx, ebx
shl ebp, cl
not ebp
mov dword [rdi + 0x4844], ebp
mov r12d, 0x40
cmp al, 0x10
jb 0x140045df3
cmp edx, ebx
jge 0x140045d6d
mov rcx, rdi
call fcn.14004bbb5
mov edx, dword [rdi + 0x4824]
xor esi, esi
mov ebp, edx
mov eax, 0
sub ebp, ebx
jl 0x140045da4
mov eax, dword [rdi + 0x4820]
mov ecx, ebx
rol eax, cl
lea rcx, [0x1401e2f90]
mov ecx, dword [rcx + rbx*4]
mov edx, ecx
not edx
and edx, eax
mov dword [rdi + 0x4820], edx
and eax, ecx
mov dword [rdi + 0x4824], ebp
mov edx, ebp
add dword [rdi + 0x4844], eax
jmp 0x140045df3
test edx, edx
jg 0x140045dc9
mov rcx, rdi
call fcn.14004bbb5
mov edx, dword [rdi + 0x4824]
test edx, edx
jle 0x140045de0
mov r8d, dword [rdi + 0x4820]
lea eax, [r8 + r8]
mov dword [rdi + 0x4820], eax
dec edx
mov dword [rdi + 0x4824], edx
test r8d, r8d
js 0x140045dec
mov r12d, ebx
mov esi, dword [rsp + 0xdc]
jmp 0x140045df3
mov r12d, ebx
mov esi, dword [rsp + 0x40]
movsxd r14, r14d
mov eax, dword [rdi + 0x4838]
cmp r14d, eax
jg 0x140045eac
mov dword [rsp + 0xa0], esi
lea rsi, [0x1401e2f30]
mov rbx, r14
movzx ebp, byte [r14 + rsi]
cmp word [r15 + rbp*2], 0
je 0x140045e71
test edx, edx
jg 0x140045e40
mov rcx, rdi
call fcn.14004bbb5
lea rsi, [0x1401e2f30]
mov edx, dword [rdi + 0x4824]
test edx, edx
jle 0x140045e79
mov eax, dword [rdi + 0x4820]
lea ecx, [rax + rax]
mov dword [rdi + 0x4820], ecx
dec edx
mov dword [rdi + 0x4824], edx
test eax, eax
jns 0x140045e79
movsx eax, word [r15 + rbp*2]
test dword [rsp + 0x40], eax
jne 0x140045e79
test ax, ax
jle 0x140045e8f
add eax, dword [rsp + 0x40]
jmp 0x140045e93
test r12d, r12d
je 0x140045e9a
dec r12d
lea r14, [rbx + 1]
movsxd rax, dword [rdi + 0x4838]
lea rcx, [r14 - 1]
cmp rcx, rax
jl 0x140045e13
jmp 0x140045ea6
sub eax, dword [rsp + 0x40]
mov word [r15 + rbp*2], ax
jmp 0x140045e79
mov ecx, dword [rsp + 0xa0]
mov word [r15 + rbp*2], cx
inc rbx
mov r14, rbx
cmp eax, r14d
jge 0x140045c14
mov rdi, qword [rsp + 0x38]
mov eax, dword [rdi + 0x486c]
lea ecx, [rax - 1]
mov dword [rdi + 0x486c], ecx
cmp eax, 1
jg 0x140045efb
cmp dword [rdi + 0x4824], 0x17
jg 0x140045edf
mov rcx, rdi
call fcn.14004bbb5
mov al, byte [rdi + 0x4828]
mov ecx, eax
and cl, 0xf8
cmp cl, 0xd0
jne 0x1400466a4
mov rcx, rdi
call fcn.14004b6e6
mov edx, dword [rsp + 0x90]
inc edx
cmp edx, dword [rsp + 0xa4]
mov rcx, qword [rsp + 0xa8]
jne 0x140045a85
jmp 0x140046203
shl rcx, 0xa
lea rax, [rdi + rcx]
add rax, 0x3688
mov qword [rsp + 0x40], rax
mov edx, dword [rdi + 0x4824]
mov rax, qword [rsp + 0x98]
mov rcx, qword [rsp + 0x50]
lea r12, [rax + rcx]
mov dword [rsp + 0xa0], r13d
cmp edx, 0xf
mov rdi, qword [rsp + 0x38]
jg 0x140045f62
mov rcx, rdi
call fcn.14004bbb5
mov esi, dword [rdi + 0x4820]
mov rcx, rsi
shr rcx, 0x17
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + rcx*2]
movsxd r10, r14d
test eax, eax
je 0x140045fc2
mov ecx, eax
and ecx, 0xf
mov edx, dword [rdi + 0x4824]
sub edx, ecx
lea rbx, [0x1401e2f30]
jl 0x140048e2c
mov ebp, eax
shr ebp, 4
shl esi, cl
and ebp, 0xf
add rbp, r10
mov dword [rdi + 0x4820], esi
mov dword [rdi + 0x4824], edx
lea r14d, [rbp + 1]
movzx ebp, byte [rbx + rbp]
shr eax, 8
jmp 0x14004615b
cmp dword [rdi + 0x4824], 0xf
jg 0x140045fe6
mov rcx, rdi
mov rsi, r10
call fcn.14004bbb5
mov r10, rsi
mov esi, dword [rdi + 0x4820]
mov rcx, rsi
shr rcx, 0x17
mov rax, qword [rsp + 0x78]
movzx eax, byte [rax + rcx]
cmp rax, 0xff
je 0x140046028
mov rcx, qword [rsp + 0x50]
add rcx, rdi
movzx ecx, byte [rax + rcx + 0x1f48]
mov edx, dword [rdi + 0x4824]
sub edx, ecx
jl 0x140048e2c
shl esi, cl
mov dword [rdi + 0x4820], esi
mov dword [rdi + 0x4824], edx
jmp 0x1400460af
mov eax, esi
shr eax, 0x10
xor ebp, ebp
mov rcx, rbp
inc rbp
cmp eax, dword [r12 + rcx*4]
jae 0x14004602f
mov edx, dword [rdi + 0x4824]
cmp ebp, 8
je 0x140048e23
lea r9, [rbp + 9]
cmp edx, r9d
jl 0x140048e2c
mov cl, 0x17
sub cl, bpl
mov ebx, esi
shr ebx, cl
mov ecx, r9d
lea rax, [0x1401e2f90]
and ebx, dword [rax + rcx*4]
mov r8, rdi
mov rax, qword [rsp + 0x50]
add rdi, rax
add ebx, dword [rdi + rcx*4 + 0x2094]
cmp ebx, 0xff
ja 0x140048e2c
mov edi, edx
sub edi, ebp
add edi, 0xfffffff7
sub edx, ebp
mov ecx, r9d
shl esi, cl
add edx, 0xfffffff7
mov dword [r8 + 0x4824], edi
mov dword [r8 + 0x4820], esi
mov eax, ebx
mov rdi, r8
mov rcx, qword [rsp + 0x50]
add rcx, rdi
movzx ebp, byte [rax + rcx + 0x1e48]
mov esi, ebp
and esi, 0xf
mov r13, rbp
shr r13, 4
test rsi, rsi
je 0x140046177
cmp edx, esi
jge 0x1400460ec
mov rcx, rdi
mov rbx, r10
call fcn.14004bbb5
mov r10, rbx
mov edx, dword [rdi + 0x4824]
mov ebp, r13d
add rbp, r10
xor eax, eax
mov ebx, edx
sub ebx, esi
jl 0x140046144
mov edx, dword [rdi + 0x4820]
mov eax, edx
shr eax, 0x1f
mov ecx, esi
rol edx, cl
lea rcx, [0x1401e2f90]
mov r8d, dword [rcx + rsi*4]
mov ecx, r8d
not ecx
and ecx, edx
mov rdi, qword [rsp + 0x38]
mov dword [rdi + 0x4820], ecx
and edx, r8d
mov rdi, qword [rsp + 0x38]
mov dword [rdi + 0x4824], ebx
dec eax
lea rcx, [0x1401e2fe0]
and eax, dword [rcx + rsi*4]
add eax, edx
mov edx, ebx
lea r14d, [rbp + 1]
lea rcx, [0x1401e2f30]
movzx ebp, byte [rcx + rbp]
mov r13d, dword [rsp + 0xa0]
mov ecx, r13d
shl eax, cl
mov word [r15 + rbp*2], ax
cmp r14d, dword [rdi + 0x4838]
jle 0x140045f50
jmp 0x140045eb5
cmp bpl, 0xef
jbe 0x14004618b
add r14d, 0x10
mov r13d, dword [rsp + 0xa0]
jmp 0x140046165
mov eax, 1
mov ecx, r13d
shl eax, cl
mov dword [rdi + 0x4844], eax
cmp bpl, 0x10
jb 0x140045bd6
cmp edx, r13d
jge 0x1400461bd
mov rsi, qword [rsp + 0x38]
mov rcx, rsi
call fcn.14004bbb5
mov edx, dword [rsi + 0x4824]
xor eax, eax
sub edx, r13d
jl 0x1400461f3
mov rbx, qword [rsp + 0x38]
mov eax, dword [rbx + 0x4820]
mov ecx, r13d
rol eax, cl
lea rcx, [0x1401e2f90]
mov ebp, dword [rcx + r13*4]
mov ecx, ebp
not ecx
and ecx, eax
mov dword [rbx + 0x4820], ecx
and eax, ebp
mov dword [rbx + 0x4824], edx
mov rdi, qword [rsp + 0x38]
add eax, dword [rdi + 0x4844]
jmp 0x140045bd6
mov eax, dword [rsp + 0x88]
inc eax
mov dword [rsp + 0x88], eax
cmp eax, dword [rsp + 0xd8]
jne 0x140045a68
jmp 0x140046699
cmp eax, 1
jne 0x1400464c9
movsxd r15, dword [rdi + 0x4858]
imul rax, r15, 0x60
mov esi, dword [rdi + rax + 0x46bc]
mov ecx, dword [rdi + rax + 0x46c0]
lea ebp, [rsi + 7]
sar ebp, 3
lea ebx, [rcx + 7]
sar ebx, 3
test ebp, ebp
mov edx, 0
cmovle ebp, edx
mov qword [rsp + 0x40], rbp
test ebx, ebx
cmovle ebx, edx
mov dword [rsp + 0x50], ebx
mov ebx, 1
test ecx, ecx
jle 0x140046691
lea rbp, [rdi + rax]
add rbp, 0x46b4
xor r14d, r14d
xor r12d, r12d
mov qword [rsp + 0x78], rsi
test esi, esi
jle 0x140046369
xor r13d, r13d
mov rsi, qword [rsp + 0x40]
movsxd rax, dword [rbp]
movsxd rcx, dword [rbp - 8]
shl rcx, 7
add rcx, rdi
add rcx, 0x3488
imul r9, rax, 0x690
shl rax, 0xa
add rax, rdi
add rax, 0x3688
add r9, qword [rsp + 0x68]
movsxd rdx, dword [rbp - 4]
imul r8, rdx, 0x690
add r8, qword [rsp + 0x60]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], rax
mov rcx, rdi
lea rbx, [rsp + 0xf0]
mov rdx, rbx
call fcn.14004b736
test eax, eax
je 0x14004668f
mov edx, dword [rbp + 0x10]
mov eax, r14d
imul eax, edx
movsxd rcx, eax
add rcx, qword [rbp + 0x1c]
add rcx, r13
mov r8, rbx
call qword [rdi + 0x4870]
mov eax, dword [rdi + 0x486c]
lea ecx, [rax - 1]
mov dword [rdi + 0x486c], ecx
cmp eax, 1
jg 0x14004635c
cmp dword [rdi + 0x4824], 0x17
jg 0x140046348
mov rcx, rdi
call fcn.14004bbb5
mov al, byte [rdi + 0x4828]
and al, 0xf8
cmp al, 0xd0
jne 0x140046380
mov rcx, rdi
call fcn.14004b6e6
add r13, 8
dec rsi
jne 0x14004629e
inc r12d
add r14d, 8
cmp r12d, dword [rsp + 0x50]
mov rsi, qword [rsp + 0x78]
jne 0x14004628e
mov ebx, 1
jmp 0x140046691
mov ecx, dword [rdi + 0x4694]
test ecx, ecx
jle 0x140046699
mov rax, qword [rsp + 0x38]
mov eax, dword [rax + 0x4690]
xor r15d, r15d
test eax, eax
jle 0x1400464b8
xor r12d, r12d
mov rdi, qword [rsp + 0x38]
mov eax, dword [rdi + 0x4854]
test eax, eax
jle 0x14004645f
xor r14d, r14d
movsxd r13, dword [rdi + r14*4 + 0x4858]
imul rcx, r13, 0x60
cmp dword [rdi + rcx + 0x46a8], 0
jle 0x140046450
lea rsi, [rdi + rcx]
add rsi, 0x46a8
xor ebp, ebp
xor ebx, ebx
mov eax, dword [rsi - 4]
cmp ebx, eax
jge 0x14004643f
mov ecx, dword [rsi]
imul ecx, r15d
add ecx, ebp
imul ecx, dword [rsi + 0x50]
imul eax, r12d
add ecx, eax
add ecx, ebx
shl ecx, 6
movsxd rdx, ecx
add rdx, rdx
add rdx, qword [rsi + 0x48]
movsxd rax, dword [rsi + 8]
imul rax, rax, 0x690
mov rcx, qword [rsp + 0x38]
lea r8, [rcx + rax]
add r8, 8
mov r9d, r13d
call fcn.14004bd3e
inc ebx
test eax, eax
jne 0x1400463ec
jmp 0x140048e4d
inc ebp
cmp ebp, dword [rsi]
jl 0x1400463ea
mov rdi, qword [rsp + 0x38]
mov eax, dword [rdi + 0x4854]
inc r14
movsxd rcx, eax
cmp r14, rcx
jl 0x1400463c7
mov eax, dword [rdi + 0x486c]
lea ecx, [rax - 1]
mov dword [rdi + 0x486c], ecx
cmp eax, 1
jg 0x1400464a0
cmp dword [rdi + 0x4824], 0x17
jg 0x140046484
mov rcx, rdi
call fcn.14004bbb5
mov al, byte [rdi + 0x4828]
mov ecx, eax
and cl, 0xf8
cmp cl, 0xd0
jne 0x1400466a4
mov rcx, rdi
call fcn.14004b6e6
inc r12d
mov eax, dword [rdi + 0x4690]
cmp r12d, eax
jl 0x1400463b6
mov ecx, dword [rdi + 0x4694]
inc r15d
cmp r15d, ecx
jl 0x1400463a6
jmp 0x140046699
mov ecx, dword [rdi + 0x4694]
mov ebx, 1
test ecx, ecx
jle 0x140046691
mov eax, dword [rdi + 0x4690]
mov dword [rsp + 0x40], 0
test eax, eax
jle 0x14004667b
mov dword [rsp + 0x50], 0
mov ecx, dword [rdi + 0x4854]
test ecx, ecx
jle 0x140046624
xor ebp, ebp
movsxd rsi, dword [rdi + rbp*4 + 0x4858]
imul rdx, rsi, 0x60
mov eax, dword [rdi + rdx + 0x46a8]
test eax, eax
jle 0x140046615
mov qword [rsp + 0x78], rbp
lea rbx, [rdi + rdx]
add rbx, 0x46a8
mov r12d, dword [rbx - 4]
xor ebp, ebp
test r12d, r12d
jle 0x1400465fb
xor r15d, r15d
lea r13, [rsp + 0xf0]
mov r14d, dword [rbx]
movsxd rax, dword [rbx + 0xc]
movsxd rcx, dword [rbx + 4]
shl rcx, 7
add rcx, rdi
add rcx, 0x3488
imul r9, rax, 0x690
shl rax, 0xa
add rax, rdi
add rax, 0x3688
add r9, qword [rsp + 0x68]
movsxd rdx, dword [rbx + 8]
imul r8, rdx, 0x690
add r8, qword [rsp + 0x60]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], rax
mov rcx, rdi
mov rdx, r13
call fcn.14004b736
test eax, eax
je 0x14004668f
imul r14d, dword [rsp + 0x40]
add r14d, ebp
imul r12d, dword [rsp + 0x50]
add r12d, r15d
shl r12d, 3
mov edx, dword [rbx + 0x1c]
imul r14d, edx
shl r14d, 3
movsxd rax, r14d
add rax, qword [rbx + 0x28]
movsxd rcx, r12d
add rcx, rax
mov r8, r13
call qword [rdi + 0x4870]
inc r15d
mov r12d, dword [rbx - 4]
cmp r15d, r12d
jl 0x14004654f
mov eax, dword [rbx]
inc ebp
cmp ebp, eax
jl 0x14004653b
mov ecx, dword [rdi + 0x4854]
mov ebx, 1
mov rbp, qword [rsp + 0x78]
inc rbp
movsxd rax, ecx
cmp rbp, rax
jl 0x14004650a
mov eax, dword [rdi + 0x486c]
lea ecx, [rax - 1]
mov dword [rdi + 0x486c], ecx
cmp eax, 1
jg 0x14004665d
cmp dword [rdi + 0x4824], 0x17
jg 0x140046649
mov rcx, rdi
call fcn.14004bbb5
mov al, byte [rdi + 0x4828]
and al, 0xf8
cmp al, 0xd0
jne 0x140046691
mov rcx, rdi
call fcn.14004b6e6
mov ecx, dword [rsp + 0x50]
inc ecx
mov eax, dword [rdi + 0x4690]
mov dword [rsp + 0x50], ecx
cmp ecx, eax
jl 0x1400464fa
mov ecx, dword [rdi + 0x4694]
mov edx, dword [rsp + 0x40]
inc edx
mov dword [rsp + 0x40], edx
cmp edx, ecx
jl 0x1400464ea
jmp 0x140046691
xor ebx, ebx
test ebx, ebx
je 0x140048e4d
mov rdi, qword [rsp + 0x38]
mov al, byte [rdi + 0x4828]
cmp al, 0xff
jne 0x140046831
jmp 0x1400467f6
mov rbx, qword [rdi]
mov rax, qword [rbx + 0xc0]
cmp rax, qword [rbx + 0xc8]
jae 0x1400466d3
lea rcx, [rax + 1]
mov qword [rbx + 0xc0], rcx
mov al, byte [rax]
jmp 0x14004672f
cmp dword [rbx + 0x30], 0
je 0x14004670b
mov r8d, dword [rbx + 0x34]
lea rsi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rsi
call qword [rbx + 0x10]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
test eax, eax
je 0x14004670f
movsxd rcx, eax
add rcx, rsi
mov al, byte [rsi]
jmp 0x14004671d
xor eax, eax
jmp 0x14004672f
and dword [rbx + 0x30], 0
lea rcx, [rbx + 0x39]
mov byte [rbx + 0x38], 0
xor eax, eax
mov qword [rbx + 0xc8], rcx
lea rcx, [rbx + 0x39]
mov qword [rbx + 0xc0], rcx
cmp al, 0xff
jne 0x1400467f6
mov rsi, qword [rdi]
cmp qword [rsi + 0x10], 0
je 0x140046756
mov rcx, qword [rsi + 0x28]
call qword [rsi + 0x20]
test eax, eax
je 0x14004676a
cmp dword [rsi + 0x30], 0
je 0x140046829
mov rax, qword [rsi + 0xc0]
cmp rax, qword [rsi + 0xc8]
jae 0x140046829
mov rbx, qword [rdi]
mov rax, qword [rbx + 0xc0]
cmp rax, qword [rbx + 0xc8]
jae 0x14004678c
lea rcx, [rax + 1]
mov qword [rbx + 0xc0], rcx
mov al, byte [rax]
jmp 0x1400467e8
cmp dword [rbx + 0x30], 0
je 0x1400467c4
mov r8d, dword [rbx + 0x34]
lea rsi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rsi
call qword [rbx + 0x10]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
test eax, eax
je 0x1400467c8
movsxd rcx, eax
add rcx, rsi
mov al, byte [rsi]
jmp 0x1400467d6
xor eax, eax
jmp 0x1400467e8
and dword [rbx + 0x30], 0
lea rcx, [rbx + 0x39]
mov byte [rbx + 0x38], 0
xor eax, eax
mov qword [rbx + 0xc8], rcx
lea rcx, [rbx + 0x39]
mov qword [rbx + 0xc0], rcx
lea ecx, [rax - 1]
cmp cl, 0xfd
ja 0x14004672f
jmp 0x14004682b
mov rsi, qword [rdi]
cmp qword [rsi + 0x10], 0
je 0x140046815
mov rcx, qword [rsi + 0x28]
call qword [rsi + 0x20]
test eax, eax
je 0x1400466b1
cmp dword [rsi + 0x30], 0
je 0x140046829
mov rax, qword [rsi + 0xc0]
cmp rax, qword [rsi + 0xc8]
jb 0x1400466b1
mov al, 0xff
mov byte [rdi + 0x4828], al
mov rcx, rdi
call fcn.14004a9a8
mov ecx, eax
and cl, 0xf8
cmp cl, 0xd0
jne 0x14004550a
jmp 0x14004558c
lea r13, str.not_GIF
jmp 0x14004901f
cmp r15, rbp
jae 0x1400468f7
lea rax, [r15 + 1]
mov r13, qword [rsp + 0x48]
mov qword [r13], rax
mov bl, byte [r15]
jmp 0x1400469c6
and dword [rsi + 0x30], 0
lea rbp, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov rbx, r13
mov qword [rsi + 0xc8], rbp
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
lea r13, str.not_GIF
cmp al, 0x47
jne 0x14004901f
cmp rcx, rbp
jae 0x1400468bb
lea rdx, [rcx + 1]
mov qword [rbx], rdx
mov al, byte [rcx]
jmp 0x140046963
cmp dword [rsi + 0x30], 0
je 0x14004901f
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046943
movsxd rbp, eax
add rbp, rdi
mov al, byte [rdi]
jmp 0x140046951
cmp dword [rsi + 0x30], 0
mov r13, qword [rsp + 0x48]
je 0x1400469c1
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
mov r15, qword [rsi + 0xd0]
sub ecx, r15d
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400469d5
movsxd rbp, eax
add rbp, rdi
mov bl, byte [rdi]
jmp 0x1400469e3
and dword [rsi + 0x30], 0
lea rbp, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsi + 0xc8], rbp
lea rdx, [rsi + 0x39]
mov qword [rsi + 0xc0], rdx
cmp al, 0x49
jne 0x14004901f
cmp rdx, rbp
jae 0x14004697e
lea rcx, [rdx + 1]
mov qword [rbx], rcx
mov al, byte [rdx]
jmp 0x140046b70
cmp dword [rsi + 0x30], 0
je 0x14004901f
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046b50
movsxd rbp, eax
add rbp, rdi
mov al, byte [rdi]
jmp 0x140046b5e
xor ebx, ebx
mov rax, r15
mov r14, qword [rsp + 0x70]
mov r12, qword [rsp + 0x80]
jmp 0x140046a02
and dword [rsi + 0x30], 0
lea rbp, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor ebx, ebx
mov r14, qword [rsp + 0x70]
mov r12, qword [rsp + 0x80]
mov qword [rsi + 0xc8], rbp
lea rax, [rsi + 0x39]
mov qword [rsi + 0xc0], rax
cmp rax, rbp
jae 0x140046a13
lea rcx, [rax + 1]
mov qword [r13], rcx
mov al, byte [rax]
jmp 0x140046a73
cmp dword [rsi + 0x30], 0
je 0x140046a4f
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
mov r15, qword [rsi + 0xd0]
sub ecx, r15d
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046a53
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140046a61
xor eax, eax
jmp 0x140046a73
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsi + 0xc8], rcx
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp bl, 0x50
jne 0x140046aa8
add al, 0xc9
cmp al, 0xfe
jb 0x140046aa8
mov qword [rsi + 0xc0], r15
mov rax, qword [rsi + 0xd8]
mov qword [rsi + 0xc8], rax
cmp r15, rax
jae 0x140046aca
lea rcx, [r15 + 1]
mov qword [r13], rcx
mov bl, byte [r15]
jmp 0x140046bf5
mov qword [rsi + 0xc0], r15
mov rdi, qword [rsi + 0xd8]
mov qword [rsi + 0xc8], rdi
cmp r15, rdi
jae 0x140046b10
inc r15
jmp 0x140046c6c
cmp dword [rsi + 0x30], 0
je 0x140046bce
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
mov r15, qword [rsi + 0xd0]
sub ecx, r15d
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046bd5
cdqe
add rax, rdi
mov bl, byte [rdi]
jmp 0x140046be3
cmp dword [rsi + 0x30], 0
je 0x140046c70
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046c55
cdqe
add rdi, rax
jmp 0x140046c61
and dword [rsi + 0x30], 0
lea rbp, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsi + 0xc8], rbp
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp al, 0x46
jne 0x14004901f
cmp rcx, rbp
jae 0x140046b8b
lea rdx, [rcx + 1]
mov qword [rbx], rdx
mov al, byte [rcx]
jmp 0x140046e50
cmp dword [rsi + 0x30], 0
je 0x14004901f
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046e30
movsxd rbp, eax
add rbp, rdi
mov al, byte [rdi]
jmp 0x140046e3e
xor ebx, ebx
mov rcx, r15
jmp 0x140046bf5
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor ebx, ebx
mov qword [rsi + 0xc8], rax
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp rcx, rax
jae 0x140046c0c
lea rbp, [rcx + 1]
mov qword [r13], rbp
mov dl, byte [rcx]
mov rcx, rbp
jmp 0x140046cf0
cmp dword [rsi + 0x30], 0
je 0x140046c4e
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
mov r15, qword [rsi + 0xd0]
sub ecx, r15d
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046cd0
cdqe
add rax, rdi
mov dl, byte [rdi]
jmp 0x140046cde
xor edx, edx
jmp 0x140046cf0
and dword [rsi + 0x30], 0
lea rdi, [rsi + 0x39]
mov byte [rsi + 0x38], 0
mov qword [rsi + 0xc8], rdi
lea r15, [rsi + 0x39]
mov qword [r13], r15
cmp r15, rdi
jae 0x140046c88
lea rax, [r15 + 1]
mov qword [r13], rax
mov r12b, byte [r15]
mov r15, rax
jmp 0x140046daa
cmp dword [rsi + 0x30], 0
je 0x140046cc8
mov r8d, dword [rsi + 0x34]
lea rbx, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rbx
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046d89
movsxd rdi, eax
add rdi, rbx
mov r12b, byte [rbx]
jmp 0x140046d98
xor r12d, r12d
jmp 0x140046db6
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor edx, edx
mov qword [rsi + 0xc8], rax
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp bl, 0x50
jne 0x140046d27
lea ebp, [rdx - 0x37]
cmp bpl, 0xfd
jbe 0x140046d27
xor ebp, ebp
cmp dl, 0x36
sete bpl
lea edx, [rbp + rbp + 1]
mov dword [rsi + 8], edx
cmp rcx, rax
jae 0x140046d41
lea rax, [rcx + 1]
mov qword [r13], rax
mov al, byte [rcx]
mov rbx, qword [rsp + 0x58]
jmp 0x140046f8f
mov qword [rsi + 0xc0], r15
mov rax, qword [rsi + 0xd8]
mov qword [rsi + 0xc8], rax
jmp 0x140046fff
cmp dword [rsi + 0x30], 0
mov rbx, qword [rsp + 0x58]
je 0x140046e29
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046f6f
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140046f7d
and dword [rsi + 0x30], 0
lea rdi, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor r12d, r12d
mov qword [rsi + 0xc8], rdi
lea r15, [rsi + 0x39]
mov qword [rsi + 0xc0], r15
xor ebx, ebx
cmp r12b, 1
ja 0x140047b40
cmp r15, rdi
jae 0x140046dcb
lea rax, [r15 + 1]
mov qword [r13], rax
mov al, byte [r15]
jmp 0x140046ece
cmp dword [rsi + 0x30], 0
je 0x140046e22
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140046eae
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140046ebc
lea rdx, str.bad_DC_huff
jmp 0x140048e33
lea rdx, str.bad_AC_huff
jmp 0x140048e33
xor eax, eax
jmp 0x140046ece
xor eax, eax
jmp 0x140046f8f
and dword [rsi + 0x30], 0
lea rbp, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsi + 0xc8], rbp
lea rdx, [rsi + 0x39]
mov qword [rsi + 0xc0], rdx
cmp al, 0x38
jne 0x14004901f
cmp rdx, rbp
jae 0x140046e6b
lea rax, [rdx + 1]
mov qword [rbx], rax
mov cl, byte [rdx]
jmp 0x1400472e6
cmp dword [rsi + 0x30], 0
je 0x14004901f
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400472c6
movsxd rbp, eax
add rbp, rdi
mov cl, byte [rdi]
jmp 0x1400472d4
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsi + 0xc8], rcx
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
and al, 0xf7
movabs rbp, 0x101018100
cmp r12b, 1
jne 0x140046f16
xor ebx, ebx
cmp al, 1
jne 0x140047b40
mov rcx, rsi
mov edx, 4
call fcn.140049a81
mov rax, qword [rsi + 0xc0]
cmp rax, qword [rsi + 0xc8]
jae 0x140046f2c
lea rcx, [rax + 1]
mov qword [r13], rcx
mov al, byte [rax]
jmp 0x140047443
add al, 0xfc
mov edx, 9
xor ebx, ebx
cmp al, 0xfe
jae 0x14004745d
jmp 0x140047b40
cmp dword [rsi + 0x30], 0
je 0x140047b40
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140047423
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140047431
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsi + 0xc8], rcx
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
lea rdi, [rsp + 0xf0]
mov byte [rdi], al
mov rcx, rsi
mov rdx, rdi
call fcn.14004c0f9
mov rcx, rsi
mov rdx, rdi
call fcn.14004c2d6
mov dword [rsi], eax
test eax, eax
je 0x140046fff
lea rdi, [rsp + 0xf0]
mov rcx, rsi
mov rdx, rdi
call fcn.14004c0f9
mov rcx, rsi
mov rdx, rdi
call fcn.14004c2d6
mov dword [rsi + 4], eax
test eax, eax
je 0x140046fff
lea rdi, [rsp + 0xf0]
mov rcx, rsi
mov rdx, rdi
call fcn.14004c0f9
mov rcx, rsi
mov rdx, rdi
call fcn.14004c2d6
cmp eax, 0x10000
jl 0x14004700f
mov rax, qword [rsp + 0x89d0]
and dword [rax], 0
jmp 0x140048a89
xor ecx, ecx
cmp eax, 0x100
setge cl
lea eax, [rcx*8 + 8]
mov rcx, qword [rsp + 0x89d0]
mov dword [rcx], eax
cmp dword [rsi + 4], 0x4000
ja 0x140048a89
mov eax, dword [rsi]
cmp eax, 0x4000
ja 0x140048a89
mov dword [r12], eax
mov eax, dword [rsi + 4]
mov dword [r14], eax
test rbx, rbx
je 0x140047058
mov eax, dword [rsi + 8]
mov dword [rbx], eax
mov rax, qword [rsp + 0x89d0]
mov ecx, dword [rax]
mov ebp, 8
mov eax, ecx
cdq
idiv ebp
mov r8d, eax
mov ebx, dword [rsi]
mov edi, dword [rsi + 8]
mov eax, edi
or eax, ebx
js 0x140048a89
mov ebp, dword [rsi + 4]
test ebx, ebx
je 0x140047099
xor r14d, r14d
mov eax, 0x7fffffff
xor edx, edx
idiv ebx
cmp eax, edi
jl 0x140049063
imul edi, ebx
mov eax, edi
or eax, ebp
js 0x140048a89
test ebp, ebp
je 0x1400470be
xor r14d, r14d
mov eax, 0x7fffffff
xor edx, edx
idiv ebp
cmp eax, edi
jl 0x140049063
imul edi, ebp
mov eax, edi
or eax, r8d
js 0x140048a89
add ecx, 7
cmp ecx, 0xf
jb 0x1400470e6
mov eax, 0x7fffffff
xor edx, edx
idiv r8d
cmp eax, edi
jl 0x140048a89
imul edi, r8d
movsxd rcx, edi
call fcn.14019ef94
test rax, rax
je 0x140048a89
mov rcx, rsi
mov r12, rax
mov rdx, rax
mov r8d, edi
call fcn.14004c04e
test eax, eax
je 0x140048f47
mov ecx, dword [rsi + 8]
mov rax, rcx
mov qword [rsp + 0x48], rcx
cmp ecx, 4
je 0x140048fae
mov rax, qword [rsp + 0x89d0]
cmp dword [rax], 0x10
mov eax, dword [rsi]
mov qword [rsp + 0x38], rax
mov esi, dword [rsi + 4]
jne 0x140048f83
mov ecx, esi
imul ecx, dword [rsp + 0x38]
shl ecx, 3
call fcn.14019ef94
mov qword [rsp + 0x70], rax
test rax, rax
je 0x140048f47
xor r11d, r11d
test esi, esi
cmovg r11d, esi
jle 0x1400472b9
mov rax, qword [rsp + 0x48]
lea r15d, [rax*8 + 4]
cmp r15d, 0x1c
ja 0x140049430
mov eax, 0x10101000
bt eax, r15d
jae 0x140049430
mov rcx, qword [rsp + 0x38]
lea eax, [rcx - 1]
mov dword [rsp + 0x58], eax
mov rax, qword [rsp + 0x70]
lea r9, [rax + 6]
lea r10d, [rcx*4]
mov rax, qword [rsp + 0x48]
mov r13d, eax
imul r13d, ecx
xor r8d, r8d
xor edi, edi
xor eax, eax
mov ecx, edi
lea rbp, [r9 + rcx*2]
mov ecx, r8d
lea rdx, [r12 + rcx*2]
cmp r15d, 0x14
je 0x14004723a
cmp r15d, 0x1c
jne 0x140047276
cmp dword [rsp + 0x58], 0
js 0x1400472a7
mov rbx, qword [rsp + 0x38]
mov ecx, ebx
imul ecx, eax
mov edx, ecx
imul edx, dword [rsp + 0x48]
lea rdx, [r12 + rdx*2]
shl ecx, 2
mov rsi, qword [rsp + 0x70]
lea rbp, [rsi + rcx*2]
movzx ecx, word [rdx]
mov word [rbp], cx
movzx ecx, word [rdx + 2]
mov word [rbp + 2], cx
movzx ecx, word [rdx + 4]
mov word [rbp + 4], cx
or word [rbp + 6], 0xffff
dec ebx
add rdx, 6
add rbp, 8
test ebx, ebx
jg 0x14004720e
jmp 0x1400472a7
cmp dword [rsp + 0x58], 0
js 0x1400472a7
xor ebx, ebx
mov rcx, qword [rsp + 0x38]
mov r14d, ecx
movzx ecx, word [rdx + rbx]
mov word [rbp + rbx*2 - 2], cx
mov word [rbp + rbx*2 - 4], cx
mov word [rbp + rbx*2 - 6], cx
movzx ecx, word [rdx + rbx + 2]
mov word [rbp + rbx*2], cx
dec r14d
add rbx, 4
test r14d, r14d
jg 0x14004724b
jmp 0x1400472a7
cmp dword [rsp + 0x58], 0
js 0x1400472a7
xor ebx, ebx
mov rcx, qword [rsp + 0x38]
movzx esi, word [rdx + rbx]
mov word [rbp + rbx*4 - 2], si
mov word [rbp + rbx*4 - 4], si
mov word [rbp + rbx*4 - 6], si
or word [rbp + rbx*4], 0xffff
dec ecx
add rbx, 2
test ecx, ecx
jg 0x140047284
inc rax
add edi, r10d
add r8d, r13d
cmp rax, r11
jne 0x1400471c5
mov rcx, r12
call fcn.14019ec78
jmp 0x140048f9d
and dword [rsi + 0x30], 0
lea rbp, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor ecx, ecx
mov qword [rsi + 0xc8], rbp
lea rax, [rsi + 0x39]
mov qword [rsi + 0xc0], rax
cmp cl, 0x39
je 0x1400472f7
movzx ecx, cl
cmp ecx, 0x37
jne 0x14004901f
cmp rax, rbp
jae 0x140047314
mov qword [rsp + 0x80], r12
mov qword [rsp + 0x70], r14
lea rcx, [rax + 1]
mov qword [rbx], rcx
mov al, byte [rax]
jmp 0x140047389
cmp dword [rsi + 0x30], 0
je 0x14004901f
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x14004735c
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x14004736a
lea rdx, str.bad_SOS_component_count
jmp 0x140048e33
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsp + 0x80], r12
mov qword [rsp + 0x70], r14
mov qword [rsi + 0xc8], rcx
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp al, 0x61
jne 0x14004901f
mov rcx, rsi
call fcn.1400497b3
mov ebp, eax
mov dword [rsp + 0xf0], eax
mov rcx, rsi
call fcn.1400497b3
mov dword [rsp + 0x58], eax
mov dword [rsp + 0xf4], eax
mov rcx, qword [rsi + 0xc0]
mov rax, qword [rsi + 0xc8]
cmp rcx, rax
jae 0x1400473dd
lea rdx, [rcx + 1]
mov r14, rbx
mov qword [rbx], rdx
mov dil, byte [rcx]
mov rcx, rdx
jmp 0x140048511
cmp dword [rsi + 0x30], 0
mov r14, rbx
je 0x140047b00
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400484f1
cdqe
add rax, rdi
mov dil, byte [rdi]
jmp 0x1400484ff
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov qword [rsi + 0xc8], rcx
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp al, 0x20
ja 0x140047b40
mov edx, 4
movzx eax, al
bt rbp, rax
jae 0x140047b40
mov rcx, rsi
call fcn.140049a81
mov rcx, rsi
call fcn.1400497b3
xor ebx, ebx
test eax, eax
je 0x140047b40
mov rcx, rsi
call fcn.1400497b3
test eax, eax
je 0x140047b40
mov rax, qword [r13]
mov rcx, qword [rsp + 0x38]
cmp rax, qword [rcx]
jae 0x1400474a4
lea rcx, [rax + 1]
mov qword [r13], rcx
mov al, byte [rax]
jmp 0x140047b1d
cmp dword [rsi + 0x30], 0
je 0x1400474e3
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140047b07
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140047b15
xor eax, eax
jmp 0x140047b1d
cmp dword [rdi + 0x4830], 0
je 0x1400475e5
mov rax, qword [rdi]
cmp dword [rax + 8], 0
jle 0x1400475e5
xor ebx, ebx
imul rcx, rbx, 0x60
mov r12d, dword [rdi + rcx + 0x46bc]
mov edx, dword [rdi + rcx + 0x46c0]
lea esi, [r12 + 7]
sar esi, 3
lea r13d, [rdx + 7]
sar r13d, 3
test esi, esi
mov ebp, 0
cmovle esi, ebp
test r13d, r13d
cmovle r13d, ebp
test edx, edx
jle 0x1400475d5
mov qword [rsp + 0x48], rbx
lea rbp, [rdi + rcx]
add rbp, 0x46f0
xor ebx, ebx
test r12d, r12d
jle 0x1400475c6
lea r14d, [rbx*8]
xor r15d, r15d
mov eax, dword [rbp + 8]
imul eax, ebx
add eax, r15d
shl eax, 6
movsxd r8, eax
add r8, r8
add r8, qword [rbp]
movsxd rax, dword [rbp - 0x44]
shl rax, 7
add rax, rdi
add rax, 0x3488
xor ecx, ecx
movzx edx, word [r8 + rcx*2]
imul dx, word [rax + rcx*2]
mov word [r8 + rcx*2], dx
inc rcx
cmp rcx, 0x40
jne 0x14004758d
mov edx, dword [rbp - 0x2c]
mov eax, r14d
imul eax, edx
cdqe
add rax, qword [rbp - 0x20]
lea rcx, [rax + r15*8]
call qword [rdi + 0x4870]
inc r15
cmp r15, rsi
jne 0x140047564
inc ebx
cmp ebx, r13d
jne 0x140047554
mov rax, qword [rdi]
mov rbx, qword [rsp + 0x48]
inc rbx
movsxd rcx, dword [rax + 8]
cmp rbx, rcx
jl 0x140047506
mov rcx, qword [rdi]
mov r14d, dword [rcx + 8]
cmp r14, 3
jne 0x14004761a
mov al, 1
mov dword [rsp + 0x78], eax
cmp dword [rdi + 0x4850], 3
je 0x14004762b
cmp dword [rdi + 0x484c], 0
jne 0x140047623
cmp dword [rdi + 0x4848], 0
sete al
mov dword [rsp + 0x78], eax
jmp 0x14004762b
test r14d, r14d
jle 0x140048e52
mov dword [rsp + 0x78], 0
xorps xmm0, xmm0
movaps xmmword [rsp + 0xc0], xmm0
movaps xmmword [rsp + 0xb0], xmm0
mov qword [rsp + 0x68], rcx
mov eax, dword [rcx]
lea r13d, [rax + 3]
mov qword [rsp + 0x60], rax
lea r12d, [rax - 1]
xor ebx, ebx
lea r15, [0x14004b696]
mov rsi, r14
mov rcx, r13
call fcn.14019ef94
mov qword [rdi + rbx*2 + 0x46e8], rax
test rax, rax
je 0x140048e52
mov eax, dword [rdi + 0x4688]
cdq
idiv dword [rdi + rbx*2 + 0x46a4]
mov ebp, eax
mov dword [rsp + rbx + 0x108], eax
mov eax, dword [rdi + 0x468c]
cdq
idiv dword [rdi + rbx*2 + 0x46a8]
mov ecx, eax
mov dword [rsp + rbx + 0x10c], eax
sar eax, 1
mov dword [rsp + rbx + 0x114], eax
lea eax, [r12 + rbp]
xor edx, edx
div ebp
mov dword [rsp + rbx + 0x110], eax
and dword [rsp + rbx + 0x118], 0
mov rax, qword [rdi + rbx*2 + 0x46d0]
mov qword [rsp + rbx + 0x100], rax
mov qword [rsp + rbx + 0xf8], rax
cmp ebp, 2
je 0x140047708
cmp ebp, 1
jne 0x140047722
cmp ecx, 2
mov rax, r15
lea rdx, [0x14004b5ac]
cmove rax, rdx
cmp ecx, 1
lea rcx, [0x14004b5a8]
cmove rax, rcx
jmp 0x140047725
lea rax, [0x14004b5e2]
cmp ecx, 1
je 0x140047725
cmp ecx, 2
jne 0x140047722
mov rax, qword [rdi + 0x4880]
jmp 0x140047725
mov rax, r15
mov qword [rsp + rbx + 0xf0], rax
add rbx, 0x30
dec rsi
jne 0x14004765e
mov qword [rsp + 0x48], r14
mov rax, qword [rsp + 0x68]
mov r8d, dword [rax + 4]
mov ecx, 4
mov rdx, qword [rsp + 0x60]
mov r9d, 1
call fcn.140049be2
test rax, rax
je 0x140048e52
mov r14, rax
mov r10, qword [rdi]
cmp dword [r10 + 4], 0
je 0x1400484ad
mov rax, rdi
add rax, 0x46c0
mov qword [rsp + 0x98], rax
lea rax, [r14 + 3]
mov qword [rsp + 0x90], rax
xor r11d, r11d
xor esi, esi
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x60], r11
mov ebp, dword [r10]
mov qword [rsp + 0x40], rsi
lea eax, [rsi*4]
mov qword [rsp + 0x68], rax
lea r13, [rsp + 0x118]
mov r12, qword [rsp + 0x98]
xor esi, esi
mov r15d, dword [r13 - 4]
mov eax, dword [r13 - 0x10]
mov r14d, dword [r13 - 0xc]
mov ecx, r14d
sar ecx, 1
xor edx, edx
xor ebx, ebx
cmp r15d, ecx
setge dl
setl bl
mov r9d, dword [r13 - 8]
mov r8, qword [r13 + rbx*8 - 0x20]
mov rdx, qword [r13 + rdx*8 - 0x20]
mov rcx, qword [r12 + 0x28]
mov dword [rsp + 0x20], eax
call qword [r13 - 0x28]
mov qword [rsp + rsi*8 + 0xb0], rax
inc r15d
mov dword [r13 - 4], r15d
cmp r15d, r14d
jl 0x14004783f
and dword [r13 - 4], 0
mov rax, qword [r13 - 0x18]
mov qword [r13 - 0x20], rax
mov ecx, dword [r13]
inc ecx
mov dword [r13], ecx
cmp ecx, dword [r12]
jge 0x14004783f
movsxd rcx, dword [r12 + 4]
add rax, rcx
mov qword [r13 - 0x18], rax
inc rsi
add r12, 0x60
add r13, 0x30
cmp qword [rsp + 0x48], rsi
jne 0x1400477c9
mov rdx, qword [rsp + 0xb0]
mov r10, qword [rdi]
mov rcx, qword [rsp + 0x68]
imul ecx, ebp
mov r14, qword [rsp + 0x50]
add rcx, r14
mov eax, dword [r10 + 8]
cmp eax, 3
je 0x140047940
cmp eax, 4
jne 0x1400479a4
mov eax, dword [rdi + 0x484c]
cmp eax, 2
mov r15d, 0x80
je 0x140047a2a
test eax, eax
jne 0x1400479e3
cmp dword [r10], 0
mov r11, qword [rsp + 0x60]
je 0x140047a10
mov r8, qword [rsp + 0xc8]
mov r9, qword [rsp + 0xb8]
mov rcx, qword [rsp + 0xc0]
imul ebp, r11d
add rbp, r14
xor esi, esi
movzx eax, byte [r8 + rsi]
movzx ebx, byte [rdx + rsi]
imul ebx, eax
lea edi, [rbx + r15]
shr edi, 8
add ebx, edi
add ebx, 0x80
mov byte [rbp + rsi*4], bh
movzx ebx, byte [r9 + rsi]
imul ebx, eax
lea edi, [rbx + r15]
shr edi, 8
add ebx, edi
add ebx, 0x80
mov byte [rbp + rsi*4 + 1], bh
movzx ebx, byte [rcx + rsi]
imul ebx, eax
lea eax, [rbx + r15]
shr eax, 8
add eax, ebx
add eax, 0x80
mov byte [rbp + rsi*4 + 2], ah
mov byte [rbp + rsi*4 + 3], 0xff
inc rsi
mov eax, dword [r10]
cmp rsi, rax
jb 0x1400478d3
mov rdi, qword [rsp + 0x38]
jmp 0x140047a10
cmp byte [rsp + 0x78], 0
je 0x1400479e3
cmp dword [r10], 0
mov r11, qword [rsp + 0x60]
je 0x140047a10
mov rcx, qword [rsp + 0xb8]
mov rbx, qword [rsp + 0xc0]
imul ebp, r11d
add rbp, r14
xor edi, edi
mov rsi, qword [rsp + 0x40]
mov al, byte [rdx + rdi]
mov byte [rbp + rdi*4], al
mov al, byte [rcx + rdi]
mov byte [rbp + rdi*4 + 1], al
mov al, byte [rbx + rdi]
mov byte [rbp + rdi*4 + 2], al
mov byte [rbp + rdi*4 + 3], 0xff
inc rdi
mov eax, dword [r10]
cmp rdi, rax
jb 0x140047978
mov rdi, qword [rsp + 0x38]
jmp 0x140047a15
cmp dword [r10], 0
je 0x140047a0b
mov r11, qword [rsp + 0x60]
imul ebp, r11d
add rbp, qword [rsp + 0x90]
xor ecx, ecx
mov rsi, qword [rsp + 0x40]
mov al, byte [rdx + rcx]
mov byte [rbp + rcx*4 - 1], al
mov byte [rbp + rcx*4 - 2], al
mov byte [rbp + rcx*4 - 3], al
mov byte [rbp + rcx*4], 0xff
inc rcx
mov eax, dword [r10]
cmp rcx, rax
jb 0x1400479c2
jmp 0x140047a15
mov eax, dword [r10]
mov r8, qword [rsp + 0xb8]
mov r9, qword [rsp + 0xc0]
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x28], 4
call qword [rdi + 0x4878]
mov r10, qword [rdi]
mov r11, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x40]
inc esi
add r11d, 4
cmp esi, dword [r10 + 4]
jb 0x14004779e
jmp 0x1400484ad
mov eax, dword [r10]
mov r8, qword [rsp + 0xb8]
mov r9, qword [rsp + 0xc0]
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x28], 4
call qword [rdi + 0x4878]
mov r10, qword [rdi]
cmp dword [r10], 0
je 0x140047a0b
mov r8, qword [rsp + 0xc8]
mov r11, qword [rsp + 0x60]
imul ebp, r11d
add rbp, r14
xor edx, edx
mov ecx, 0xff
movzx esi, byte [r8 + rdx]
movzx eax, byte [rbp + rdx*4]
xor eax, ecx
imul eax, esi
lea ebx, [rax + r15]
shr ebx, 8
add eax, ebx
add eax, 0x80
mov byte [rbp + rdx*4], ah
movzx eax, byte [rbp + rdx*4 + 1]
xor eax, ecx
imul eax, esi
lea ebx, [rax + r15]
shr ebx, 8
add eax, ebx
add eax, 0x80
mov byte [rbp + rdx*4 + 1], ah
movzx eax, byte [rbp + rdx*4 + 2]
xor eax, ecx
imul eax, esi
lea ebx, [rax + r15]
shr ebx, 8
add eax, ebx
add eax, 0x80
mov byte [rbp + rdx*4 + 2], ah
inc rdx
mov eax, dword [r10]
cmp rdx, rax
jb 0x140047a73
jmp 0x140047a10
lea rdx, str.bad_DNL_len
jmp 0x140048e33
lea rdx, str.bad_DNL_height
jmp 0x140048e33
lea rdx, str.bad_SOS_len
jmp 0x140048e33
xor edi, edi
jmp 0x140048511
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov rdx, qword [rsp + 0x38]
mov qword [rdx], rcx
cmp r12b, 1
jne 0x140047b2e
add al, 0xf8
xor ebx, ebx
test al, 0xf7
sete bl
jmp 0x140047b40
cmp al, 0x20
ja 0x140047b40
movzx eax, al
bt rbp, rax
jae 0x140047b40
mov ebx, 1
mov rcx, qword [rsi + 0xd0]
mov rax, qword [rsi + 0xd8]
mov qword [rsi + 0xc0], rcx
mov qword [rsi + 0xc8], rax
test ebx, ebx
je 0x140048a89
cmp rcx, rax
jae 0x140047b81
lea rdx, [rcx + 1]
mov qword [r13], rdx
mov cl, byte [rcx]
mov dword [rsp + 0x40], ecx
mov rcx, rdx
mov r15, qword [rsp + 0x58]
jmp 0x140047bf1
cmp dword [rsi + 0x30], 0
mov r15, qword [rsp + 0x58]
je 0x140047bc1
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140047bcb
cdqe
add rax, rdi
mov cl, byte [rdi]
mov dword [rsp + 0x40], ecx
jmp 0x140047bdf
mov dword [rsp + 0x40], 0
jmp 0x140047bf1
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
mov dword [rsp + 0x40], 0
mov qword [rsi + 0xc8], rax
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp rcx, rax
jae 0x140047c05
lea rdx, [rcx + 1]
mov qword [r13], rdx
mov bl, byte [rcx]
mov rcx, rdx
jmp 0x140047c60
cmp dword [rsi + 0x30], 0
je 0x140047c3c
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140047c40
cdqe
add rax, rdi
mov bl, byte [rdi]
jmp 0x140047c4e
xor ebx, ebx
jmp 0x140047c60
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor ebx, ebx
mov qword [rsi + 0xc8], rax
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
cmp rcx, rax
jae 0x140047c75
lea rax, [rcx + 1]
mov qword [r13], rax
mov al, byte [rcx]
mov dword [rsp + 0x58], eax
jmp 0x140047ce0
cmp dword [rsi + 0x30], 0
je 0x140047cb0
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140047cba
cdqe
add rax, rdi
mov cl, byte [rdi]
mov dword [rsp + 0x58], ecx
jmp 0x140047cce
mov dword [rsp + 0x58], 0
jmp 0x140047ce0
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
mov dword [rsp + 0x58], 0
mov qword [rsi + 0xc8], rax
lea rax, [rsi + 0x39]
mov qword [rsi + 0xc0], rax
mov rcx, rsi
call fcn.1400497b3
mov edi, eax
mov rcx, rsi
call fcn.1400497b3
mov dword [rsp + 0x60], eax
mov rax, qword [rsi + 0xc0]
cmp rax, qword [rsi + 0xc8]
mov dword [rsp + 0x98], edi
jae 0x140047d1a
lea rcx, [rax + 1]
mov qword [r13], rcx
mov r12b, byte [rax]
jmp 0x140047d78
cmp dword [rsi + 0x30], 0
je 0x140047d52
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140047d57
cdqe
add rax, rdi
mov r12b, byte [rdi]
jmp 0x140047d66
xor r12d, r12d
jmp 0x140047d78
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor r12d, r12d
mov qword [rsi + 0xc8], rax
lea rax, [rsi + 0x39]
mov qword [rsi + 0xc0], rax
mov rcx, rsi
call fcn.1400497b3
mov rcx, rsi
call fcn.1400497b3
mov rcx, rsi
call fcn.1400497b3
mov edi, eax
mov rcx, rsi
call fcn.1400497b3
mov ebp, eax
mov rcx, qword [rsi + 0xc0]
mov rax, qword [rsi + 0xc8]
cmp rcx, rax
jae 0x140047dc2
lea rdx, [rcx + 1]
mov qword [r13], rdx
mov cl, byte [rcx]
mov dword [rsp + 0x68], ecx
mov rcx, rdx
jmp 0x140047e37
cmp dword [rsi + 0x30], 0
je 0x140047e02
mov r14, rbp
mov ebp, edi
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140047e0c
cdqe
add rax, rdi
mov cl, byte [rdi]
mov dword [rsp + 0x68], ecx
jmp 0x140047e20
mov dword [rsp + 0x68], 0
jmp 0x140047e37
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
mov dword [rsp + 0x68], 0
mov qword [rsi + 0xc8], rax
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
mov edi, ebp
mov rbp, r14
and dword [rsp + 0xf0], 0
cmp rcx, rax
jae 0x140047e50
lea rax, [rcx + 1]
mov qword [r13], rax
mov al, byte [rcx]
jmp 0x140047eb6
cmp dword [rsi + 0x30], 0
je 0x140047e8d
mov r14, rbp
mov ebp, edi
mov r8d, dword [rsi + 0x34]
lea rdi, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140047e91
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140047e9f
xor eax, eax
jmp 0x140047eb6
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov edi, ebp
mov qword [rsi + 0xc8], rcx
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
mov rbp, r14
and dword [rsp + 0xb0], 0
xor r14d, r14d
cmp edi, 0x4000
ja 0x140049063
cmp ebp, 0x4000
ja 0x140049063
test al, 0x20
sete r13b
test bl, bl
je 0x140047ef3
movzx ecx, r12b
lea r8, [rsp + 0xf0]
xor edx, edx
jmp 0x140047f1e
mov ecx, dword [rsp + 0x58]
movzx eax, cl
mov r8, rbp
lea ebp, [rax - 8]
cmp cl, 8
cmovb ebp, eax
movzx ecx, byte [rsp + 0x68]
xor edx, edx
cmp ebp, 3
mov rbp, r8
sete dl
lea r8, [rsp + 0xf0]
call fcn.14004c3dc
mov r12d, eax
test eax, eax
je 0x140048a89
mov rax, qword [rsp + 0x80]
mov dword [rax], edi
mov rax, qword [rsp + 0x70]
mov dword [rax], ebp
test r15, r15
je 0x140047f47
mov dword [r15], r12d
xor r14d, r14d
mov ecx, edi
mov edx, ebp
mov r8d, r12d
xor r9d, r9d
call fcn.140049750
test eax, eax
je 0x140049063
mov ecx, edi
mov edx, ebp
mov r8d, r12d
xor r9d, r9d
call fcn.140049be2
test rax, rax
je 0x140048a89
mov r14, rax
movzx edx, byte [rsp + 0x40]
mov rcx, rsi
call fcn.140049a81
mov r15d, r12d
mov dword [rsp + 0x50], ebx
test bl, bl
jne 0x140047ffc
cmp byte [rsp + 0x58], 7
ja 0x140047ffc
cmp dword [rsp + 0xf0], 0
jne 0x140047ffc
mov dword [rsp + 0x88], edi
mov qword [rsp + 0xa8], rbp
test ebp, ebp
je 0x140048441
mov ebp, r12d
imul ebp, dword [rsp + 0x88]
mov rax, qword [rsp + 0xa8]
lea edi, [rax - 1]
xor ebx, ebx
test r13b, r13b
mov eax, edi
cmove eax, ebx
imul eax, ebp
movsxd rdx, eax
add rdx, r14
mov rcx, rsi
mov r8d, ebp
call fcn.14004c04e
inc ebx
add edi, 0xffffffff
jb 0x140047fd4
jmp 0x140048441
cmp byte [rsp + 0x50], 0
je 0x140048093
mov ebx, dword [rsp + 0x60]
test ebx, ebx
je 0x14004808b
mov rcx, rsi
mov edx, dword [rsp + 0x98]
call fcn.140049a81
mov ecx, ebx
mov edx, r12d
xor r8d, r8d
call fcn.14004b4e2
mov rcx, rax
mov qword [rsp + 0x90], rax
test rax, rax
je 0x14004808b
cmp dword [rsp + 0xf0], 0
mov dword [rsp + 0x88], edi
mov byte [rsp + 0xa4], r13b
je 0x140048df5
mov rbx, rbp
mov edi, dword [rsp + 0x60]
mov rbp, qword [rsp + 0x90]
mov rcx, rsi
mov rdx, rbp
call fcn.14004c433
add rbp, r15
dec edi
jne 0x140048067
mov dword [rsp + 0x80], r12d
mov rdi, qword [rsp + 0x38]
mov rbp, rbx
jmp 0x1400480b9
mov rcx, r14
jmp 0x140048a84
mov byte [rsp + 0xa4], r13b
mov dword [rsp + 0x80], r12d
mov dword [rsp + 0x88], edi
xor eax, eax
mov qword [rsp + 0x90], rax
mov rdi, qword [rsp + 0x38]
mov qword [rsp + 0xa8], rbp
imul ebp, dword [rsp + 0x88]
mov qword [rsp + 0x98], rbp
test ebp, ebp
je 0x1400483b6
lea rbx, [rsi + 0x38]
lea rax, [rsi + 0x39]
mov qword [rsp + 0x40], rax
mov al, 1
mov dword [rsp + 0x78], 0
xor r13d, r13d
xor r12d, r12d
mov qword [rsp + 0x70], rbx
mov ecx, dword [rsp + 0x80]
mov ebp, ecx
imul ebp, r12d
add rbp, r14
cmp byte [rsp + 0x58], 8
jb 0x1400481db
test r13d, r13d
je 0x140048146
xor ecx, ecx
cmp dword [rsp + 0x78], 0
setne dl
sete bl
or bl, al
mov dword [rsp + 0x78], 1
test bl, 1
je 0x140048326
mov cl, dl
mov dword [rsp + 0x78], ecx
jmp 0x1400481d6
mov rbx, qword [rsp + 0x48]
mov rax, qword [rbx]
cmp rax, qword [rdi]
jae 0x14004815e
lea rcx, [rax + 1]
mov qword [rbx], rcx
mov al, byte [rax]
jmp 0x1400481c2
cmp dword [rsi + 0x30], 0
je 0x1400481a1
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdi, qword [rsp + 0x70]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400481a5
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
mov rdi, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x40]
jmp 0x1400481bc
xor eax, eax
jmp 0x1400481c2
and dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
xor eax, eax
mov rdx, qword [rsp + 0x40]
mov rcx, rdx
mov rdi, qword [rsp + 0x38]
mov qword [rdi], rcx
mov qword [rbx], rdx
movzx eax, al
mov r13d, eax
and r13d, 0x7f
inc r13d
shr eax, 7
mov dword [rsp + 0x78], eax
mov rbx, qword [rsp + 0x70]
cmp byte [rsp + 0x50], 0
je 0x140048204
cmp byte [rsp + 0x68], 8
jne 0x140048226
mov rdx, qword [rsp + 0x48]
mov rax, qword [rdx]
cmp rax, qword [rdi]
jae 0x14004823d
lea rcx, [rax + 1]
mov qword [rdx], rcx
mov al, byte [rax]
jmp 0x14004835b
cmp dword [rsp + 0xf0], 0
je 0x140048286
mov rcx, rsi
lea rdi, [rsp + 0xb0]
mov rdx, rdi
call fcn.14004c433
jmp 0x14004838d
mov rcx, rsi
call fcn.1400497b3
mov edx, eax
lea rdi, [rsp + 0xb0]
jmp 0x140048366
cmp dword [rsi + 0x30], 0
je 0x140048335
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rbx
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140048339
movsxd rcx, eax
add rcx, rbx
mov al, byte [rbx]
mov rdx, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
jmp 0x140048350
mov rax, qword [rsp + 0x48]
mov rbx, qword [rax]
mov rax, qword [rdi]
xor edi, edi
cmp rbx, rax
jae 0x1400482ab
lea rcx, [rbx + 1]
mov rdx, qword [rsp + 0x48]
mov qword [rdx], rcx
mov dl, byte [rbx]
mov rbx, rcx
jmp 0x140048313
cmp dword [rsi + 0x30], 0
je 0x1400482ed
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rbx, qword [rsp + 0x70]
mov rdx, rbx
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400482f1
cdqe
add rax, rbx
mov dl, byte [rbx]
mov rcx, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x40]
jmp 0x140048308
xor edx, edx
jmp 0x140048313
and dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
xor edx, edx
mov rbx, qword [rsp + 0x40]
mov rax, rbx
mov rcx, qword [rsp + 0x38]
mov qword [rcx], rax
mov rcx, qword [rsp + 0x48]
mov qword [rcx], rbx
mov byte [rsp + rdi + 0xb0], dl
inc rdi
cmp r15, rdi
jne 0x140048293
mov rbx, qword [rsp + 0x70]
lea rdi, [rsp + 0xb0]
jmp 0x14004838d
xor eax, eax
jmp 0x14004835b
and dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
xor eax, eax
mov rdi, qword [rsp + 0x40]
mov rcx, rdi
mov rdx, qword [rsp + 0x38]
mov qword [rdx], rcx
mov rcx, qword [rsp + 0x48]
mov qword [rcx], rdi
lea rdi, [rsp + 0xb0]
movzx edx, al
cmp edx, dword [rsp + 0x60]
mov eax, 0
cmovae edx, eax
imul edx, dword [rsp + 0x80]
add rdx, qword [rsp + 0x90]
mov rcx, rdi
mov r8, r15
call fcn.1401aec60
mov rcx, rbp
mov rdx, rdi
mov r8, r15
call fcn.1401aec60
dec r13d
inc r12
xor eax, eax
cmp r12, qword [rsp + 0x98]
mov rdi, qword [rsp + 0x38]
jne 0x1400480fb
cmp byte [rsp + 0xa4], 0
mov r12d, dword [rsp + 0x80]
je 0x140048434
cmp dword [rsp + 0xa8], 0
je 0x140048434
mov r10d, r12d
imul r10d, dword [rsp + 0x88]
mov rax, qword [rsp + 0xa8]
lea r9d, [rax + 1]
shr r9d, 1
lea r11d, [rax - 1]
imul r11d, r10d
lea r8d, [r10 + 1]
xor edi, edi
xor esi, esi
mov esi, esi
test r10d, r10d
je 0x140048427
movsxd rbx, r11d
mov rbp, r14
mov ecx, r8d
mov al, byte [rbp + rsi]
mov dl, byte [rbp + rbx]
mov byte [rbp + rsi], dl
mov byte [rbp + rbx], al
dec ecx
inc rbp
cmp ecx, 1
jg 0x14004840d
inc edi
add esi, r10d
sub r11d, r10d
cmp edi, r9d
jne 0x1400483fd
mov rcx, qword [rsp + 0x90]
call fcn.14019ec78
cmp r12d, 3
mov r8d, dword [rsp + 0x88]
mov r9, qword [rsp + 0xa8]
jb 0x140048484
cmp dword [rsp + 0xf0], 0
jne 0x140048484
mov eax, r9d
imul eax, r8d
test eax, eax
je 0x140048484
mov rcx, r14
add rcx, 2
mov dl, byte [rcx - 2]
mov bl, byte [rcx]
mov byte [rcx - 2], bl
mov byte [rcx], dl
add rcx, r15
dec eax
jne 0x140048473
cmp r12d, 4
je 0x140049063
mov rcx, r14
mov edx, r12d
call fcn.14004958a
mov r14, rax
jmp 0x140049063
lea rdx, str.bad_SOS
jmp 0x140048e33
mov rcx, rdi
call fcn.14004b59d
mov rax, qword [rdi]
mov ecx, dword [rax]
mov rdx, qword [rsp + 0x80]
mov dword [rdx], ecx
mov ecx, dword [rax + 4]
mov rdx, qword [rsp + 0x70]
mov dword [rdx], ecx
mov rdx, qword [rsp + 0x58]
test rdx, rdx
je 0x140048e5d
xor ecx, ecx
cmp dword [rax + 8], 3
setge cl
lea eax, [rcx + rcx]
inc eax
mov dword [rdx], eax
jmp 0x140048e5d
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor edi, edi
mov qword [rsi + 0xc8], rax
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
movzx edx, dil
mov dword [rsp + 0x110], edx
cmp rcx, rax
jae 0x140048535
mov rbx, rbp
lea rbp, [rcx + 1]
mov qword [r14], rbp
mov dl, byte [rcx]
mov rcx, rbp
mov rbp, rbx
jmp 0x140048590
cmp dword [rsi + 0x30], 0
je 0x14004856c
mov r8d, dword [rsi + 0x34]
lea rbx, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rbx
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140048570
cdqe
add rax, rbx
mov dl, byte [rbx]
jmp 0x14004857e
xor edx, edx
jmp 0x140048590
and dword [rsi + 0x30], 0
lea rax, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor edx, edx
mov qword [rsi + 0xc8], rax
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
movzx edx, dl
mov dword [rsp + 0x114], edx
cmp rcx, rax
jae 0x1400485ad
lea rax, [rcx + 1]
mov r12, r14
mov qword [r14], rax
mov al, byte [rcx]
jmp 0x14004860f
cmp dword [rsi + 0x30], 0
je 0x1400485e5
mov r8d, dword [rsi + 0x34]
lea rbx, [rsi + 0x38]
mov rcx, qword [rsi + 0x28]
mov rdx, rbx
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400485ec
movsxd rcx, eax
add rcx, rbx
mov al, byte [rbx]
jmp 0x1400485fa
mov r12, r14
xor eax, eax
jmp 0x14004860f
and dword [rsi + 0x30], 0
lea rcx, [rsi + 0x39]
mov byte [rsi + 0x38], 0
xor eax, eax
mov r12, r14
mov qword [rsi + 0xc8], rcx
lea rcx, [rsi + 0x39]
mov qword [rsi + 0xc0], rcx
movzx eax, al
mov dword [rsp + 0x118], eax
or dword [rsp + 0x11c], 0xffffffff
lea r13, str.too_large
cmp ebp, 0x4000
ja 0x14004901f
mov r8d, dword [rsp + 0x58]
cmp r8d, 0x4000
ja 0x14004901f
test r15, r15
je 0x140048652
mov dword [r15], 4
test dil, dil
jns 0x140048686
and dil, 7
mov r8d, 2
mov ecx, edi
shl r8d, cl
lea rdi, [rsp + 0x124]
mov rcx, rsi
mov rdx, rdi
mov r9d, 0xffffffff
call fcn.1400498c0
mov ebp, dword [rdi - 0x34]
mov r8d, dword [rdi - 0x30]
mov ecx, 4
mov edx, ebp
xor r9d, r9d
mov edi, r8d
call fcn.140049750
test eax, eax
je 0x14004901f
mov dword [rsp + 0x58], edi
mov ebx, edi
mov qword [rsp + 0x48], rbp
imul ebx, ebp
lea eax, [rbx*4]
movsxd rdi, eax
mov rcx, rdi
call fcn.14019ef94
mov rbp, rax
mov qword [rsp + 0xf8], rax
mov rcx, rdi
call fcn.14019ef94
mov r14, rax
mov qword [rsp + 0x100], rax
movsxd r15, ebx
mov rcx, r15
call fcn.14019ef94
mov qword [rsp + 0x108], rax
lea r13, str.outofmem
test rbp, rbp
je 0x14004901f
test r14, r14
je 0x14004901f
mov rbx, rax
test rax, rax
je 0x14004901f
mov rcx, rbp
xor edx, edx
mov r8, rdi
call fcn.1401afe80
mov rcx, r14
xor edx, edx
mov r8, rdi
call fcn.1401afe80
mov rcx, rbx
xor edx, edx
mov r8, r15
call fcn.1401afe80
lea r15, [rsi + 0x30]
lea rdi, [rsi + 0x38]
lea r14, [rsi + 0x39]
lea r13, str.unknown_code
mov rbx, qword [rsp + 0x38]
mov rbp, r12
mov rcx, qword [r12]
mov rax, qword [rbx]
cmp rcx, rax
jae 0x140048773
lea rdx, [rcx + 1]
mov r12, rbp
mov qword [rbp], rdx
mov cl, byte [rcx]
jmp 0x1400487c8
cmp dword [r15], 0
je 0x14004901f
mov r12, rbp
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400487ad
cdqe
add rax, rdi
mov cl, byte [rdi]
jmp 0x1400487b9
and dword [r15], 0
mov byte [rdi], 0
xor ecx, ecx
mov rax, r14
mov rbx, qword [rsp + 0x38]
mov qword [rbx], rax
mov qword [r12], r14
mov rdx, r14
cmp cl, 0x21
jne 0x140048a91
cmp rdx, rax
jae 0x1400487e2
lea rbp, [rdx + 1]
mov qword [r12], rbp
mov cl, byte [rdx]
jmp 0x140048834
cmp dword [r15], 0
je 0x1400489e8
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140048819
cdqe
add rax, rdi
mov cl, byte [rdi]
jmp 0x140048825
and dword [r15], 0
mov byte [rdi], 0
xor ecx, ecx
mov rax, r14
mov rbx, qword [rsp + 0x38]
mov qword [rbx], rax
mov qword [r12], r14
mov rbp, r14
cmp cl, 0xf9
jne 0x1400489e8
cmp rbp, rax
jae 0x14004884f
lea rdx, [rbp + 1]
mov qword [r12], rdx
mov cl, byte [rbp]
jmp 0x1400488a1
cmp dword [r15], 0
je 0x140048a6d
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140048886
cdqe
add rax, rdi
mov cl, byte [rdi]
jmp 0x140048892
and dword [r15], 0
mov byte [rdi], 0
xor ecx, ecx
mov rax, r14
mov rdx, qword [rsp + 0x38]
mov qword [rdx], rax
mov qword [r12], r14
mov rdx, r14
cmp cl, 4
jne 0x140048a6f
cmp rdx, rax
jae 0x1400488bb
lea rax, [rdx + 1]
mov qword [r12], rax
mov bl, byte [rdx]
jmp 0x14004890a
cmp dword [r15], 0
je 0x1400488ee
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400488f2
cdqe
add rax, rdi
mov bl, byte [rdi]
jmp 0x1400488fe
xor ebx, ebx
jmp 0x14004890a
and dword [r15], 0
mov byte [rdi], 0
xor ebx, ebx
mov rax, r14
mov rcx, qword [rsp + 0x38]
mov qword [rcx], rax
mov qword [r12], r14
movzx eax, bl
mov dword [rsp + 0x120], eax
mov rcx, rsi
call fcn.1400497b3
imul eax, eax, 0xa
mov dword [rsp + 0x8958], eax
mov eax, dword [rsp + 0x11c]
test eax, eax
js 0x140048939
mov byte [rsp + rax*4 + 0x127], 0xff
test bl, 1
jne 0x140048958
mov rcx, rsi
mov edx, 1
call fcn.140049a81
or dword [rsp + 0x11c], 0xffffffff
jmp 0x1400489e3
mov rdx, r12
mov rax, qword [r12]
mov rbx, qword [rsp + 0x38]
cmp rax, qword [rbx]
jae 0x140048977
lea rcx, [rax + 1]
mov r12, rdx
mov qword [rdx], rcx
mov al, byte [rax]
jmp 0x1400489cf
mov r12, rdx
cmp dword [r15], 0
je 0x1400489ae
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400489b7
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x1400489c3
xor eax, eax
mov rbx, qword [rsp + 0x38]
jmp 0x1400489cf
and dword [r15], 0
mov byte [rdi], 0
xor eax, eax
mov rcx, r14
mov rbx, qword [rsp + 0x38]
mov qword [rbx], rcx
mov qword [r12], r14
movzx eax, al
mov dword [rsp + 0x11c], eax
mov byte [rsp + rax*4 + 0x127], 0
jmp 0x1400489e8
mov rbx, qword [rsp + 0x38]
mov rdx, r12
mov rax, qword [r12]
cmp rax, qword [rbx]
jae 0x140048a02
lea rcx, [rax + 1]
mov r12, rdx
mov qword [rdx], rcx
mov al, byte [rax]
jmp 0x140048a55
mov r12, rdx
cmp dword [r15], 0
je 0x140048755
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140048a3d
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140048a49
and dword [r15], 0
mov byte [rdi], 0
xor eax, eax
mov rcx, r14
mov rbx, qword [rsp + 0x38]
mov qword [rbx], rcx
mov qword [r12], r14
test al, al
je 0x140048755
movzx edx, al
mov rcx, rsi
call fcn.140049a81
jmp 0x1400489e3
xor ecx, ecx
movzx edx, cl
mov rcx, rsi
call fcn.140049a81
jmp 0x140048750
mov rcx, qword [rsp + 0x50]
call fcn.14019ec78
xor r14d, r14d
jmp 0x140049063
movzx eax, cl
cmp eax, 0x3b
je 0x140049039
cmp eax, 0x2c
jne 0x14004901f
mov rcx, rsi
call fcn.1400497b3
mov ebx, eax
mov rcx, rsi
call fcn.1400497b3
mov qword [rsp + 0x68], rax
mov rcx, rsi
call fcn.1400497b3
mov ebp, eax
mov rcx, rsi
call fcn.1400497b3
lea ecx, [rbx + rbp]
lea r13, str.bad_Image_Descriptor
cmp ecx, dword [rsp + 0x48]
jg 0x14004901f
mov r9, rbp
mov rbp, qword [rsp + 0x68]
lea edx, [rax + rbp]
cmp edx, dword [rsp + 0x58]
mov rdx, qword [rsp + 0x48]
jg 0x14004901f
mov r8, rbx
lea r13d, [rdx*4]
mov dword [rsp + 0x8954], r13d
shl r8d, 2
mov dword [rsp + 0x893c], r8d
imul ebp, r13d
mov dword [rsp + 0x8940], ebp
shl ecx, 2
mov dword [rsp + 0x8944], ecx
imul eax, r13d
add eax, ebp
mov dword [rsp + 0x8948], eax
mov dword [rsp + 0x894c], r8d
test r9d, r9d
cmovne eax, ebp
mov dword [rsp + 0x8950], eax
mov rdx, qword [r12]
mov rax, qword [rsp + 0x38]
mov r8, qword [rax]
cmp rdx, r8
jae 0x140048f4f
lea rbp, [rdx + 1]
mov qword [r12], rbp
mov cl, byte [rdx]
mov rdx, rbp
jmp 0x140048fd5
lea rax, [rsi + 0x38]
mov qword [rsp + 0x80], rax
lea rax, [rsi + 0x39]
mov qword [rsp + 0x68], rax
xor ecx, ecx
mov rax, qword [rsp + 0x40]
test eax, eax
mov r15d, 0
cmovg r15d, eax
mov qword [rsp + 0x48], r14
mov rdi, r14
mov dword [rsp + 0x60], ebx
cmp rcx, qword [rsp + 0x98]
jae 0x140048bf3
mov rax, qword [rsp + 0x89d0]
cmp dword [rax], 0x10
jne 0x140048c1c
mov r14, rcx
cmp dword [rsp + 0x40], 0
jle 0x140048cee
xor ebx, ebx
mov rcx, rsi
call fcn.140049c44
mov rcx, qword [rsp + 0x48]
mov word [rcx + rbx*8], ax
inc rbx
cmp r15d, ebx
jne 0x140048bd5
jmp 0x140048cee
mov r14, rcx
cmp rcx, 3
sete al
cmp dword [rsp + 0x40], 0
jle 0x140048cee
neg al
xor ecx, ecx
mov byte [rdi + rcx*4], al
inc rcx
cmp r15d, ecx
jne 0x140048c0c
jmp 0x140048cee
mov r14, rcx
cmp dword [rsp + 0x60], 0x10
jne 0x140048c4b
cmp dword [rsp + 0x40], 0
jle 0x140048cee
xor ebx, ebx
mov rcx, rsi
call fcn.140049c44
mov byte [rdi + rbx*4], ah
inc rbx
cmp r15d, ebx
jne 0x140048c33
jmp 0x140048cee
cmp dword [rsp + 0x40], 0
jle 0x140048cee
mov rbx, qword [r13]
mov rax, qword [rsp + 0x38]
mov rax, qword [rax]
xor ebp, ebp
cmp rbx, rax
jae 0x140048c78
lea rcx, [rbx + 1]
mov qword [r13], rcx
mov dl, byte [rbx]
mov rbx, rcx
jmp 0x140048cdf
cmp dword [rsi + 0x30], 0
je 0x140048cbd
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rbx, qword [rsp + 0x80]
mov rdx, rbx
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140048cc1
cdqe
add rax, rbx
mov dl, byte [rbx]
mov rcx, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x68]
jmp 0x140048cd8
xor edx, edx
jmp 0x140048cdf
and dword [rsi + 0x30], 0
mov byte [rsi + 0x38], 0
xor edx, edx
mov rbx, qword [rsp + 0x68]
mov rax, rbx
mov rcx, qword [rsp + 0x38]
mov qword [rcx], rax
mov qword [r13], rbx
mov byte [rdi + rbp*4], dl
inc rbp
cmp r15d, ebp
jne 0x140048c64
mov rcx, r14
inc rcx
inc rdi
add qword [rsp + 0x48], 2
cmp rcx, 4
jne 0x140048bae
cmp dword [rsp + 0xa8], 4
mov rbx, qword [rsp + 0x58]
mov r14, qword [rsp + 0x50]
mov edi, dword [rsp + 0x88]
jb 0x140048f10
xor eax, eax
mov rdx, qword [rsp + 0x40]
test edx, edx
cmovg eax, edx
mov rcx, qword [rsp + 0x89d0]
cmp dword [rcx], 0x10
jne 0x140048e65
test edx, edx
jle 0x140048f10
xor ecx, ecx
movss xmm0, dword [0x1401e2f28]
movss xmm1, dword [0x1401ca5bc]
mov edx, ecx
and edx, 0xfffffffc
movzx ebp, word [r14 + rdx*2 + 6]
test ebp, ebp
je 0x140048de3
cmp ebp, 0xffff
je 0x140048de3
movzx ebp, bp
cvtsi2ss xmm2, ebp
divss xmm2, xmm0
movaps xmm3, xmm1
divss xmm3, xmm2
movaps xmm2, xmm1
subss xmm2, xmm3
mulss xmm2, xmm0
movzx ebp, word [r14 + rdx*2]
cvtsi2ss xmm4, ebp
mulss xmm4, xmm3
addss xmm4, xmm2
cvttss2si ebp, xmm4
mov word [r14 + rdx*2], bp
movzx ebp, word [r14 + rdx*2 + 2]
cvtsi2ss xmm4, ebp
mulss xmm4, xmm3
addss xmm4, xmm2
cvttss2si ebp, xmm4
mov word [r14 + rdx*2 + 2], bp
movzx ebp, word [r14 + rdx*2 + 4]
cvtsi2ss xmm4, ebp
mulss xmm4, xmm3
addss xmm4, xmm2
cvttss2si ebp, xmm4
mov word [r14 + rdx*2 + 4], bp
add rcx, 4
dec rax
jne 0x140048d5d
jmp 0x140048f10
mov r8d, r12d
imul r8d, dword [rsp + 0x60]
mov rcx, rsi
mov rdx, qword [rsp + 0x90]
call fcn.14004c04e
test eax, eax
je 0x140048f32
mov dword [rsp + 0x80], r12d
jmp 0x1400480b4
add edx, 0xfffffff0
mov dword [rdi + 0x4824], edx
lea rdx, str.bad_huffman_code
mov eax, dword [0x140257494]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov qword [rax + 0x10], rdx
mov rdi, qword [rsp + 0x38]
mov rcx, rdi
call fcn.14004b59d
xor r14d, r14d
mov rcx, rdi
jmp 0x14004905e
test edx, edx
jle 0x140048f10
xor ecx, ecx
movss xmm0, dword [0x1401dac7c]
movss xmm1, dword [0x1401ca5bc]
mov edx, ecx
and edx, 0xfffffffc
movzx ebp, byte [r14 + rdx + 3]
test ebp, ebp
je 0x140048f03
cmp ebp, 0xff
je 0x140048f03
movzx ebp, bpl
cvtsi2ss xmm2, ebp
divss xmm2, xmm0
movaps xmm3, xmm1
divss xmm3, xmm2
movaps xmm2, xmm1
subss xmm2, xmm3
mulss xmm2, xmm0
movzx ebp, byte [r14 + rdx]
cvtsi2ss xmm4, ebp
mulss xmm4, xmm3
addss xmm4, xmm2
cvttss2si ebp, xmm4
mov byte [r14 + rdx], bpl
movzx ebp, byte [r14 + rdx + 1]
cvtsi2ss xmm4, ebp
mulss xmm4, xmm3
addss xmm4, xmm2
cvttss2si ebp, xmm4
mov byte [r14 + rdx + 1], bpl
movzx ebp, byte [r14 + rdx + 2]
cvtsi2ss xmm4, ebp
mulss xmm4, xmm3
addss xmm4, xmm2
cvttss2si ebp, xmm4
mov byte [r14 + rdx + 2], bpl
add rcx, 4
dec rax
jne 0x140048e7f
test rbx, rbx
je 0x140048f1b
mov dword [rbx], 4
mov rax, qword [rsp + 0x70]
mov ecx, dword [rsp + 0x90]
mov dword [rax], ecx
mov dword [r12], edi
jmp 0x140049063
mov rcx, r14
call fcn.14019ec78
mov rcx, qword [rsp + 0x90]
jmp 0x140048a84
mov rcx, r12
jmp 0x140048a84
cmp dword [r15], 0
je 0x140048fb6
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140048fba
movsxd r8, eax
add r8, rdi
mov cl, byte [rdi]
jmp 0x140048fc6
mov rcx, r12
mov rdx, qword [rsp + 0x48]
mov r8, qword [rsp + 0x38]
mov r9d, esi
call fcn.14004958a
mov qword [rsp + 0x70], rax
mov rax, qword [rsp + 0x70]
mov r12, rax
test rax, rax
je 0x140048a89
mov r14, r12
jmp 0x140049063
xor ecx, ecx
jmp 0x140048fd5
and dword [r15], 0
mov byte [rdi], 0
xor ecx, ecx
mov r8, r14
mov rax, qword [rsp + 0x38]
mov qword [rax], r8
mov qword [r12], r14
mov rdx, r14
movzx eax, cl
mov dword [rsp + 0x8938], eax
mov ebp, eax
shl ebp, 0x19
sar ebp, 0x1f
mov rbx, qword [rsp + 0x48]
shl ebx, 5
test al, 0x40
cmove ebx, r13d
and ebp, 3
mov dword [rsp + 0x8934], ebx
mov dword [rsp + 0x8930], ebp
test al, al
js 0x14004907a
test byte [rsp + 0x110], 0x80
jne 0x1400490c2
lea r13, str.missing_color_table
mov eax, dword [0x140257494]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov qword [rax + 0x10], r13
mov rcx, qword [rsp + 0xf8]
call fcn.14019ec78
xor r14d, r14d
mov rcx, qword [rsp + 0x108]
call fcn.14019ec78
mov rcx, qword [rsp + 0x100]
call fcn.14019ec78
mov rax, r14
add rsp, 0x8968
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rbx, [rsp + 0x524]
mov eax, dword [rbx - 0x404]
and eax, 1
xor r9d, r9d
cmp eax, 1
sbb r9d, r9d
or r9d, dword [rbx - 0x408]
and cl, 7
mov r8d, 2
shl r8d, cl
mov rcx, rsi
mov rdx, rbx
call fcn.1400498c0
mov rdx, qword [rsi + 0xc0]
mov r8, qword [rsi + 0xc8]
jmp 0x1400490ca
lea rbx, [rsp + 0x124]
mov qword [rsp + 0x8928], rbx
cmp rdx, r8
jae 0x1400490e3
lea rax, [rdx + 1]
mov qword [r12], rax
mov al, byte [rdx]
jmp 0x140049133
cmp dword [r15], 0
je 0x140049117
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x14004911b
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x140049127
xor eax, eax
jmp 0x14004913b
and dword [r15], 0
mov byte [rdi], 0
xor eax, eax
mov rcx, r14
mov rdx, qword [rsp + 0x38]
mov qword [rdx], rcx
mov qword [r12], r14
cmp al, 0xc
ja 0x140049039
movzx ecx, al
mov ebp, 1
mov edx, ecx
shl ebp, cl
xor eax, eax
or word [rsp + rax*4 + 0x924], 0xffff
mov byte [rsp + rax*4 + 0x926], al
mov byte [rsp + rax*4 + 0x927], al
inc rax
cmp rbp, rax
jne 0x140049149
mov eax, 2
mov ecx, edx
shl eax, cl
inc ecx
dec eax
lea ebx, [rbp + 2]
mov qword [rsp + 0x88], rbp
mov edx, ebp
inc edx
mov dword [rsp + 0xa0], edx
mov dword [rsp + 0x40], 0
mov edx, 0xffffffff
mov dword [rsp + 0x90], ecx
mov r8d, ecx
mov dword [rsp + 0xa8], eax
mov dword [rsp + 0xa4], ebx
mov ecx, ebx
mov dword [rsp + 0x60], 0
xor ebx, ebx
mov dword [rsp + 0x68], 0
mov dword [rsp + 0x50], edx
mov dword [rsp + 0x48], ecx
mov dword [rsp + 0x98], eax
mov r9d, r8d
mov eax, dword [rsp + 0x40]
mov byte [rsp + 0x78], al
mov ebp, ebx
mov r8, qword [rsp + 0x38]
mov r13d, dword [rsp + 0x60]
mov qword [rsp + 0x58], r9
mov edx, dword [rsp + 0x68]
sub ebx, r9d
jge 0x1400492fd
mov rcx, qword [r12]
mov rax, qword [r8]
test edx, edx
jne 0x14004927d
cmp rcx, rax
jae 0x14004921b
lea rbx, [rcx + 1]
mov qword [r12], rbx
mov dl, byte [rcx]
mov rcx, rbx
jmp 0x140049272
cmp dword [r15], 0
je 0x1400494c0
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x140049252
cdqe
add rax, rdi
mov dl, byte [rdi]
jmp 0x14004925e
and dword [r15], 0
mov byte [rdi], 0
xor edx, edx
mov rax, r14
mov r8, qword [rsp + 0x38]
mov qword [r8], rax
mov qword [r12], r14
mov rcx, r14
mov r9, qword [rsp + 0x58]
test dl, dl
je 0x1400494c0
movzx edx, dl
cmp rcx, rax
jae 0x14004928e
lea rax, [rcx + 1]
mov qword [r12], rax
mov al, byte [rcx]
jmp 0x1400492e7
cmp dword [r15], 0
je 0x1400492c4
mov ebx, edx
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x1400492c8
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x1400492d4
xor eax, eax
jmp 0x1400492e7
and dword [r15], 0
mov byte [rdi], 0
xor eax, eax
mov rcx, r14
mov r8, qword [rsp + 0x38]
mov r9, qword [rsp + 0x58]
mov edx, ebx
mov qword [r8], rcx
mov qword [r12], r14
movzx eax, al
mov ecx, ebp
shl eax, cl
dec edx
or r13d, eax
add ebp, 8
mov ebx, ebp
jmp 0x1400491f3
mov dword [rsp + 0x68], edx
mov ebp, r13d
mov ecx, r9d
sar r13d, cl
mov dword [rsp + 0x60], r13d
and ebp, dword [rsp + 0x98]
mov al, 1
mov dword [rsp + 0x40], eax
mov r8d, dword [rsp + 0x90]
mov eax, dword [rsp + 0xa8]
mov ecx, dword [rsp + 0xa4]
mov edx, 0xffffffff
cmp ebp, dword [rsp + 0x88]
je 0x1400491c4
cmp ebp, dword [rsp + 0xa0]
je 0x140049442
lea r13, str.no_clear_code
cmp ebp, dword [rsp + 0x48]
lea rax, str.illegal_code_in_raster
cmovg r13, rax
jg 0x14004901f
mov al, byte [rsp + 0x78]
xor al, 1
test al, 1
jne 0x14004901f
cmp dword [rsp + 0x50], 0
js 0x1400493d0
cmp dword [rsp + 0x48], 0x1fff
jg 0x140049572
mov edx, dword [rsp + 0x48]
movsxd rax, edx
inc edx
mov ecx, dword [rsp + 0x50]
mov word [rsp + rax*4 + 0x924], cx
mov ecx, ecx
mov cl, byte [rsp + rcx*4 + 0x926]
mov byte [rsp + rax*4 + 0x926], cl
mov dword [rsp + 0x48], edx
cmp ebp, edx
je 0x1400493c7
movsxd rcx, ebp
mov cl, byte [rsp + rcx*4 + 0x926]
mov byte [rsp + rax*4 + 0x927], cl
jmp 0x1400493da
cmp ebp, dword [rsp + 0x48]
je 0x14004957e
lea rcx, [rsp + 0xf0]
mov edx, ebp
call fcn.140049ad7
mov r10d, dword [rsp + 0x48]
mov r11d, dword [rsp + 0x98]
test r10d, r11d
sete r8b
cmp r10d, 0x1000
setl r9b
mov rdx, qword [rsp + 0x58]
lea ecx, [rdx + 1]
mov eax, 0xffffffff
shl eax, cl
not eax
test r9b, r8b
cmovne edx, ecx
cmove eax, r11d
mov r8d, edx
mov ecx, r10d
mov edx, ebp
jmp 0x1400491c4
mov rcx, r12
call fcn.14019ec78
mov rcx, qword [rsp + 0x70]
jmp 0x140048a84
mov rcx, rsi
mov edx, dword [rsp + 0x68]
call fcn.140049a81
mov rax, qword [r12]
mov rcx, qword [rsp + 0x38]
cmp rax, qword [rcx]
jae 0x140049468
lea rcx, [rax + 1]
mov qword [r12], rcx
mov al, byte [rax]
jmp 0x1400494b4
cmp dword [r15], 0
je 0x1400494c0
mov r8d, dword [rsi + 0x34]
mov rcx, qword [rsi + 0x28]
mov rdx, rdi
call qword [rsi + 0x10]
mov ecx, dword [rsi + 0xc0]
sub ecx, dword [rsi + 0xd0]
add dword [rsi + 0xb8], ecx
test eax, eax
je 0x14004949c
movsxd rcx, eax
add rcx, rdi
mov al, byte [rdi]
jmp 0x1400494a8
and dword [r15], 0
mov byte [rdi], 0
xor eax, eax
mov rcx, r14
mov rdx, qword [rsp + 0x38]
mov qword [rdx], rcx
mov qword [r12], r14
test al, al
je 0x1400494c0
movzx edx, al
mov rcx, rsi
jmp 0x140049449
mov rax, qword [rsp + 0xf8]
test rax, rax
je 0x140049039
mov r14, rax
cmp dword [rsp + 0x114], 0
jle 0x140049545
mov ecx, dword [rsp + 0xf0]
imul ecx, dword [rsp + 0xf4]
xor eax, eax
test ecx, ecx
cmovg eax, ecx
jle 0x140049545
xor ecx, ecx
xor edx, edx
mov rbp, qword [rsp + 0x108]
cmp byte [rbp + rdx], 0
jne 0x140049539
movsxd rbp, dword [rsp + 0x114]
mov byte [rsp + rbp*4 + 0x127], 0xff
mov rbp, qword [rsp + 0xf8]
mov ebx, ecx
and ebx, 0xfffffffc
movsxd rdi, dword [rsp + 0x114]
mov edi, dword [rsp + rdi*4 + 0x124]
mov dword [rbp + rbx], edi
inc rdx
add rcx, 4
cmp rax, rdx
jne 0x1400494fa
cmp r14, rsi
je 0x140049039
mov eax, dword [rsp + 0xf0]
mov rcx, qword [rsp + 0x80]
mov dword [rcx], eax
mov eax, dword [rsp + 0xf4]
mov rcx, qword [rsp + 0x70]
mov dword [rcx], eax
jmp 0x140049049
lea r13, str.too_many_codes
jmp 0x14004901f
lea r13, str.illegal_code_in_raster
jmp 0x14004901f