Function at 0x100772f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1021f100
mov eax, dword fs:[0]
push eax
sub esp, 0x714
mov eax, dword [0x104fb780]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x6cc], ecx
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 8]
mov dword [ecx], eax
xor eax, eax
mov dword [ebp - 0x720], ecx
mov dword [ebp - 0x6dc], edx
mov dword [ecx + 4], 0
mov word [ecx + 8], 0xff
mov dword [ecx + 0xc], 0
mov dword [ebp - 0x6f0], eax
mov dword [ebp - 0x71c], eax
mov dword [ebp - 0x718], eax
mov dword [ebp - 0x708], eax
mov dword [ebp - 0x714], eax
mov ecx, 0x3b
mov dword [ebp - 0x59c], 0xffffffff
lea edi, [ebp - 0x100]
mov dword [ebp - 0x598], 0xffffffff
rep stosd dword es:[edi], eax
mov ecx, 0x74
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
lea esi, [ebp - 0x59c]
lea edi, [ebp - 0x594]
xorps xmm0, xmm0
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x74
movlpd qword [ebp - 0x3c4], xmm0
lea esi, [ebp - 0x3c4]
movlpd qword [ebp - 0x6e4], xmm0
lea edi, [ebp - 0x3bc]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [edx]
xor ecx, ecx
cdq
mov dword [ebp - 0x6d4], ecx
mov ecx, eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x6d8], edx
cdq
mov edi, eax
mov dword [ebp - 0x6ec], esi
mov eax, dword [ebp - 0x6d8]
mov dword [ebp - 0x6e8], ecx
mov dword [ebp - 0x6f8], edi
mov dword [ebp - 0x700], edx
cmp eax, edx
ja 0x1007770e
jb 0x10077418
cmp ecx, edi
ja 0x1007770e
mov edi, dword [ebp - 0x6e0]
mov esi, dword [ebp - 0x6e4]
mov edx, dword [ebp - 0x6ec]
mov dword [ebp - 0x6f4], ecx
mov ecx, dword [ebp - 0x6dc]
mov dword [ebp - 0x6e0], eax
mov eax, edx
sub eax, dword [ecx]
cmp eax, dword [ebp + 0xc]
jge 0x10077c53
mov eax, dword [ebp - 0x6d4]
cmp eax, 6
jge 0x1007748f
mov ecx, 5
sub ecx, eax
shr ecx, 3
inc ecx
lea eax, [eax + ecx*8]
mov dword [ebp - 0x6d4], eax
movzx eax, byte [edx]
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
mov edx, dword [ebp - 0x6ec]
or esi, eax
inc edx
mov dword [ebp - 0x6ec], edx
sub ecx, 1
jne 0x10077468
mov eax, dword [ebp - 0x6d4]
sub eax, 6
mov edx, edi
mov dword [ebp - 0x6d4], eax
mov eax, esi
mov ecx, dword [ebp - 0x6d4]
call fcn.101209a0
mov ecx, eax
xor edx, edx
and ecx, 0x3f
mov dword [ebp - 0x6f0], edx
mov dword [ebp - 0x6d0], ecx
cmp ecx, 0x3f
jne 0x1007758e
mov ecx, dword [ebp - 0x6dc]
mov edx, dword [ebp - 0x6ec]
mov eax, edx
sub eax, dword [ecx]
cmp eax, dword [ebp + 0xc]
jge 0x10077c11
mov eax, dword [ebp - 0x6d4]
cmp eax, 8
jge 0x10077527
mov ecx, 7
sub ecx, eax
shr ecx, 3
inc ecx
lea eax, [eax + ecx*8]
mov dword [ebp - 0x6d4], eax
nop dword [eax + eax]
movzx eax, byte [edx]
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
mov edx, dword [ebp - 0x6ec]
or esi, eax
inc edx
mov dword [ebp - 0x6ec], edx
sub ecx, 1
jne 0x10077500
mov eax, dword [ebp - 0x6d4]
sub eax, 8
mov edx, edi
mov dword [ebp - 0x6d4], eax
mov eax, esi
mov ecx, dword [ebp - 0x6d4]
call fcn.101209a0
movzx ecx, al
xor edx, edx
add ecx, dword [ebp - 0x6f4]
mov eax, dword [ebp + 0x14]
adc edx, dword [ebp - 0x6e0]
add ecx, 6
adc edx, 0
inc eax
mov dword [ebp - 0x6d8], edx
cdq
mov dword [ebp - 0x6e0], eax
mov eax, dword [ebp - 0x6d8]
cmp eax, edx
ja 0x10077bf0
jb 0x10077583
cmp ecx, dword [ebp - 0x6e0]
ja 0x10077bf0
add ecx, 0xffffffff
adc eax, 0xffffffff
jmp 0x100776d0
mov eax, ecx
cmp ecx, 0x3b
jae 0x10077669
or eax, edx
je 0x100776c4
mov eax, ecx
mov ecx, dword [ebp - 0x6d8]
and eax, 0x3f
mov dword [ebp - 0x6e0], eax
mov eax, dword [ebp - 0x6e8]
mov edx, dword [ebp - 0x6e0]
shld ecx, eax, 6
shl eax, 6
or edx, eax
xor eax, eax
or eax, ecx
mov dword [ebp - 0x710], edx
mov ecx, dword [ebp - 0x718]
mov dword [ebp - 0x70c], eax
cmp ecx, dword [ebp - 0x708]
je 0x100775f5
mov dword [ecx], edx
mov dword [ecx + 4], eax
add ecx, 8
mov dword [ebp - 0x718], ecx
jmp 0x10077614
lea eax, [ebp - 0x710]
push eax
push ecx
lea ecx, [ebp - 0x71c]
call fcn.10077190
mov eax, dword [ebp - 0x714]
mov dword [ebp - 0x708], eax
mov eax, dword [ebp - 0x6cc]
mov ecx, dword [ebp - 0x6d0]
movzx eax, byte [eax + 8]
cdq
cmp dword [ebp - 0x6f0], edx
ja 0x1007763e
jb 0x10077633
cmp ecx, eax
jae 0x1007763e
mov eax, dword [ebp - 0x6cc]
mov byte [eax + 8], cl
jmp 0x10077644
mov eax, dword [ebp - 0x6cc]
movzx eax, byte [eax + 9]
cdq
cmp dword [ebp - 0x6f0], edx
jb 0x10077660
ja 0x10077657
cmp ecx, eax
jbe 0x10077660
mov eax, dword [ebp - 0x6cc]
mov byte [eax + 9], cl
inc dword [ebp + ecx*4 - 0x100]
jmp 0x100776c4
add eax, dword [ebp - 0x6f4]
mov ecx, edx
adc ecx, dword [ebp - 0x6e0]
add eax, 0xffffffc7
mov dword [ebp - 0x6e0], eax
mov eax, dword [ebp + 0x14]
adc ecx, 0xffffffff
inc eax
cdq
cmp ecx, edx
ja 0x10077c32
jb 0x1007769e
cmp dword [ebp - 0x6e0], eax
ja 0x10077c32
mov ecx, dword [ebp - 0x6d0]
mov eax, dword [ebp - 0x6f0]
add ecx, 0xffffffc6
mov edx, dword [ebp - 0x6d8]
adc eax, 0xffffffff
add dword [ebp - 0x6e8], ecx
adc edx, eax
mov dword [ebp - 0x6d8], edx
mov ecx, dword [ebp - 0x6e8]
mov eax, dword [ebp - 0x6d8]
add ecx, 1
mov dword [ebp - 0x6e8], ecx
adc eax, 0
mov dword [ebp - 0x6d8], eax
cmp eax, dword [ebp - 0x700]
ja 0x100776fc
jb 0x10077424
cmp ecx, dword [ebp - 0x6f8]
jbe 0x10077424
mov eax, dword [ebp - 0x71c]
mov esi, dword [ebp - 0x6ec]
mov dword [ebp - 0x6f0], eax
mov eax, dword [ebp - 0x6cc]
xor ecx, ecx
xorps xmm1, xmm1
xorps xmm2, xmm2
mov edx, dword [eax + 4]
lea eax, [ebp - 0x100]
nop word [eax + eax]
movups xmm0, xmmword [eax + ecx*4]
paddd xmm1, xmm0
movups xmm0, xmmword [ebp + ecx*4 - 0xf0]
add ecx, 8
paddd xmm2, xmm0
cmp ecx, 0x38
jl 0x10077730
paddd xmm1, xmm2
xor edi, edi
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add edx, eax
mov dword [ebp - 0x6d0], edx
xor edx, edx
cmp ecx, 0x3a
jge 0x100777cb
mov eax, 0x3a
sub eax, ecx
cmp eax, 2
jl 0x100777a6
nop dword [eax]
add edx, dword [ebp + ecx*4 - 0x100]
add edi, dword [ebp + ecx*4 - 0xfc]
add ecx, 2
cmp ecx, 0x39
jl 0x10077790
cmp ecx, 0x3a
jae 0x100777be
mov eax, dword [ebp - 0x6d0]
add eax, dword [ebp + ecx*4 - 0x100]
mov dword [ebp - 0x6d0], eax
mov ecx, dword [ebp - 0x6d0]
lea eax, [edi + edx]
add ecx, eax
jmp 0x100777d1
mov ecx, dword [ebp - 0x6d0]
mov eax, dword [ebp - 0x6cc]
mov edx, 8
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0x6dc]
mov dword [ecx], esi
xor ecx, ecx
movzx eax, byte [eax + 9]
inc eax
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1011fe7c
mov edi, eax
add esp, 4
mov eax, dword [ebp - 0x6cc]
mov dword [ebp - 0x6d0], edi
movzx esi, byte [eax + 8]
mov dl, byte [eax + 9]
movzx eax, dl
cmp esi, eax
ja 0x10077875
nop dword [eax]
movzx eax, dl
xor ecx, ecx
sub eax, esi
xor edx, edx
inc eax
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
call fcn.10120590
mov eax, dword [ebp + esi*4 - 0x100]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x10224a50]
mov eax, dword [ebp - 0x6cc]
mulsd xmm0, xmm1
movsd qword [edi + esi*8], xmm0
inc esi
mov dl, byte [eax + 9]
movzx eax, dl
cmp esi, eax
jle 0x10077820
mov eax, dword [ebp - 0x6cc]
movzx esi, dl
movzx ecx, byte [eax + 8]
mov dword [ebp - 0x6f4], ecx
cmp ecx, esi
ja 0x100779c1
mov edx, esi
sub edx, ecx
mov dword [ebp - 0x6dc], edx
nop word [eax + eax]
lea eax, [ecx + 1]
xorps xmm0, xmm0
movsd qword [ebp - 0x710], xmm0
cmp eax, esi
jg 0x100778c4
addsd xmm0, qword [edi + eax*8]
inc eax
cmp eax, esi
jle 0x100778b2
movsd qword [ebp - 0x710], xmm0
lea eax, [edx + 1]
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
call fcn.10120590
movsd xmm1, qword [ebp - 0x710]
sub esp, 8
divsd xmm1, xmm0
movsd qword [ebp - 0x710], xmm1
fld qword [ebp - 0x710]
fstp qword [esp]
call fcn.101326b0
fstp qword [ebp - 0x6fc]
fld qword [0x10406608]
add esp, 8
fld qword [ebp - 0x6fc]
xorps xmm0, xmm0
fcompi st(1)
movlpd qword [ebp - 0x704], xmm0
fstp st(0)
jb 0x10077966
fld qword [ebp - 0x6fc]
fsub qword [0x10406608]
fstp qword [ebp - 0x6fc]
fld qword [ebp - 0x6fc]
fld qword [0x10406608]
fcompi st(1)
fstp st(0)
jbe 0x10077966
mov edi, dword [ebp - 0x704]
mov eax, dword [ebp - 0x700]
add edi, 0
adc eax, 0x80000000
jmp 0x10077972
mov eax, dword [ebp - 0x700]
mov edi, dword [ebp - 0x704]
fld qword [ebp - 0x6fc]
mov dword [ebp - 0x6e0], eax
call fcn.10120a80
mov ecx, dword [ebp - 0x6f4]
add eax, edi
mov edi, dword [ebp - 0x6d0]
adc edx, dword [ebp - 0x6e0]
mov dword [ebp + ecx*8 - 0x598], edx
mov edx, dword [ebp - 0x6dc]
mov dword [ebp + ecx*8 - 0x59c], eax
dec edx
inc ecx
mov dword [ebp - 0x6dc], edx
mov dword [ebp - 0x6f4], ecx
cmp ecx, esi
jle 0x100778a0
push edi
call fcn.1011f898
mov esi, dword [ebp - 0x6cc]
add esp, 4
movzx eax, byte [esi + 9]
movzx edi, byte [esi + 8]
lea edx, [eax - 1]
mov dword [ebp + eax*8 - 0x3c4], 0
mov dword [ebp + eax*8 - 0x3c0], 0
cmp edx, edi
jl 0x10077a2a
nop word [eax + eax]
mov eax, dword [ebp + edx*4 - 0xfc]
xor ecx, ecx
add eax, dword [ebp + edx*8 - 0x3bc]
mov dword [ebp + edx*8 - 0x3c4], eax
adc ecx, dword [ebp + edx*8 - 0x3b8]
mov dword [ebp + edx*8 - 0x3c0], ecx
dec edx
cmp edx, edi
jge 0x10077a00
mov eax, dword [esi + 4]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1011fe7c
mov dword [esi + 0xc], eax
lea edi, [ebp - 0x1e4]
mov eax, dword [ebp - 0x6cc]
lea esi, [ebp - 0x1ec]
mov ecx, 0x74
mov dword [ebp - 0x1ec], 0xffffffff
mov dword [ebp - 0x1e8], 0xffffffff
add esp, 4
rep movsd dword es:[edi], dword [esi]
movzx ecx, byte [eax + 8]
movzx edx, byte [eax + 9]
cmp ecx, edx
ja 0x10077aa5
sub edx, ecx
lea edi, [ebp - 0x1ec]
lea edi, [edi + ecx*8]
lea esi, [ebp - 0x3c4]
lea esi, [esi + ecx*8]
lea ecx, [edx*2 + 2]
and ecx, 0x3ffffffe
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x6f0]
cmp esi, dword [ebp - 0x718]
je 0x10077b5b
mov ecx, esi
nop dword [eax]
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov edi, dword [ecx]
shrd edx, eax, 6
mov eax, dword [ebp - 0x6cc]
and edi, 0x3f
mov dword [ebp - 0x6f4], edx
mov dword [ebp - 0x6dc], edi
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 4]
mov esi, dword [ebp + edi*8 - 0x1ec]
mov dword [ebp - 0x6e0], edx
cdq
mov dword [ebp - 0x700], eax
mov eax, dword [ebp + edi*8 - 0x1e8]
cmp eax, edx
ja 0x10077c79
jb 0x10077b17
cmp esi, dword [ebp - 0x700]
jae 0x10077c79
mov edi, dword [ebp - 0x6e0]
mov edx, dword [ebp - 0x6f4]
mov dword [edi + esi*4], edx
add esi, 1
mov edi, dword [ebp - 0x6dc]
adc eax, 0
add ecx, 8
mov dword [ebp + edi*8 - 0x1ec], esi
mov dword [ebp + edi*8 - 0x1e8], eax
cmp ecx, dword [ebp - 0x718]
jne 0x10077ac0
mov eax, dword [ebp - 0x6cc]
mov esi, dword [ebp - 0x6f0]
lea ecx, [ebp - 0x3c4]
mov byte [ebp - 4], 1
push ecx
lea ecx, [ebp - 0x59c]
push ecx
mov ecx, eax
call fcn.10077cd0
test esi, esi
je 0x10077bab
mov ecx, dword [ebp - 0x708]
mov eax, esi
sub ecx, esi
and ecx, 0xfffffff8
cmp ecx, 0x1000
jb 0x10077ba1
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10077c74
push ecx
push esi
call fcn.1011fe6e
add esp, 8
mov eax, dword [ebp - 0x6cc]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.1011f88a
mov esp, ebp
pop ebp
ret 0x14
push str.Error_decoding_Huffman_table__Run_beyond_end_of_table_.
lea ecx, [ebp - 0x5d8]
call fcn.10163d50
push 0x104f3c64
lea eax, [ebp - 0x5d8]
push eax
call fcn.1012195f
push str.Error_decoding_Huffman_table__Truncated_table_data_.
lea ecx, [ebp - 0x614]
call fcn.10163d50
push 0x104f3c64
lea eax, [ebp - 0x614]
push eax
call fcn.1012195f
push str.Error_decoding_Huffman_table__Run_beyond_end_of_table_.
lea ecx, [ebp - 0x650]
call fcn.10163d50
push 0x104f3c64
lea eax, [ebp - 0x650]
push eax
call fcn.1012195f
push str.Error_decoding_Huffman_table__Truncated_table_data_.
lea ecx, [ebp - 0x68c]
call fcn.10163d50
push 0x104f3c64
lea eax, [ebp - 0x68c]
push eax
call fcn.1012195f
call fcn.10131bd6
push dword [ebp - 0x6e0]
call fcn.1011f898
mov eax, dword [ebp - 0x6cc]
lea ecx, [ebp - 0x6c8]
add esp, 4
mov dword [eax + 0xc], 0
push str.Huffman_decode_error__Invalid_symbol_in_header_.
call fcn.10163d50
push 0x104f3c64
lea eax, [ebp - 0x6c8]
push eax
call fcn.1012195f
int3