Function at 0x775820
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x174
mov dword [esp + 0x10], eax
mov eax, ecx
sar eax, 0x1f
shr eax, 0x1e
add eax, ecx
and eax, 0xfffffffc
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x60], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x28], 1
mov edx, dword [eax]
mov ebx, dword [eax + 8]
mov dword [esp + 0x2c], 1
mov dword [esp + 0x38], 5
mov dword [esp + 0x48], 1
mov dword [esp + 4], edx
jmp 0x7758c8
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + edx*4 + 0x5c]
mov edx, ecx
add edx, 1
test byte [esp + 0x38], 1
mov dword [esp + ecx*4 + 0x60], eax
mov eax, dword [esp + 0x48]
mov esi, dword [esp + eax*4 + 0x5c]
mov eax, dword [esp + 0xc]
jne 0x7758a3
mov eax, 1
mov ecx, dword [esp + 0x38]
shr ecx, 0x1f
add ecx, dword [esp + 0x38]
sar ecx, 1
add ecx, 1
shl eax, cl
lea eax, [esi + eax]
mov dword [esp + edx*4 + 0x60], eax
add edx, 1
mov dword [esp + 0x2c], edx
add dword [esp + 0x48], 1
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x38]
sub eax, 1
test ecx, ecx
jle 0x775907
cmp dword [esp + 0x28], eax
je 0x7759d3
mov edx, dword [esp + 4]
mov eax, ebx
mov ecx, ebx
sar eax, 3
and ecx, 7
add ebx, 1
movzx eax, byte [edx + eax]
shl eax, cl
mov ecx, dword [esp + 0x10]
test al, al
mov dword [ecx + 8], ebx
js 0x775876
mov eax, dword [esp + 0x38]
mov edx, 1
add eax, 4
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
mov eax, edx
sar ecx, 1
shl eax, cl
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x38]
add eax, 3
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
shl edx, cl
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x38]
mov esi, ebx
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 4]
shl eax, 4
mov edi, dword [eax + 0xe73ff4]
mov eax, ebx
mov edx, dword [esp + edx*4 + 0x5c]
sar eax, 3
mov eax, dword [ecx + eax]
mov ecx, ebx
and ecx, 7
bswap eax
shl eax, cl
shr eax, 0xfd
lea eax, [edi + eax*4]
mov dword [esp + 0x50], edx
movsx edx, word [eax + 2]
movsx ebp, word [eax]
test edx, edx
jns 0x7759a3
mov ecx, dword [esp + 4]
lea esi, [ebx + 3]
mov eax, esi
sar eax, 3
mov eax, dword [ecx + eax]
mov ecx, esi
and ecx, 7
bswap eax
shl eax, cl
mov ecx, edx
shr eax, cl
add eax, ebp
lea eax, [edi + eax*4]
movsx ebp, word [eax]
movsx edx, word [eax + 2]
mov eax, dword [esp + 0x10]
lea ebx, [edx + esi]
lea edx, [ebp - 1]
cmp edx, 0xffffffff
mov dword [esp + 0x30], edx
mov dword [eax + 8], ebx
jne 0x775a04
mov ecx, dword [esp + 0x48]
cmp dword [esp + 0x2c], ecx
jle 0x775cc2
mov edx, dword [esp + 0x10]
mov ebx, dword [edx + 8]
jmp 0x7758c3
sub dword [esp + 0x38], 1
jne 0x7759f7
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x4c], 4
mov dword [esp + 0x44], 2
mov dword [esp + 0x28], ecx
jmp 0x77593a
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
jmp 0x7758e1
test edx, edx
setg byte [esp + 0x17]
jle 0x775a24
cmp dword [esp + 0x38], 3
jle 0x775a24
mov eax, 0xffffffff
add esp, 0x174
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 4]
mov eax, ebx
mov edi, dword [0xe74064]
sar eax, 3
mov eax, dword [ecx + eax]
mov ecx, ebx
and ecx, 7
bswap eax
shl eax, cl
shr eax, 0xf7
lea eax, [edi + eax*4]
movsx edx, word [eax]
mov dword [esp + 0x40], edx
movsx edx, word [eax + 2]
test edx, edx
jns 0x775a92
mov ecx, dword [esp + 4]
add ebx, 9
mov esi, edx
mov eax, ebx
neg esi
sar eax, 3
mov edx, esi
neg edx
mov eax, dword [ecx + eax]
mov ecx, ebx
and ecx, 7
bswap eax
shl eax, cl
mov ecx, edx
shr eax, cl
add eax, dword [esp + 0x40]
lea eax, [edi + eax*4]
movsx edx, word [eax]
mov dword [esp + 0x40], edx
movsx edx, word [eax + 2]
test edx, edx
js 0x775cc9
mov eax, dword [esp + 0x38]
lea ebx, [edx + ebx]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
mov eax, dword [eax*4 + 0xbafc40]
mov dword [ecx + 8], ebx
mov ecx, dword [esp + 4]
shl edx, 2
mov dword [esp + 0x18], eax
mov eax, ebx
sar eax, 3
mov esi, dword [ecx + eax]
mov eax, edx
mov ecx, ebx
neg eax
and ecx, 7
bswap esi
shl esi, cl
mov ecx, eax
mov eax, dword [esp + 0x10]
shr esi, cl
cmp byte [esp + 0x17], 0
lea edx, [ebx + edx]
mov dword [eax + 8], edx
je 0x775b17
mov edi, dword [esp + 0x38]
lea ebp, [ebp*4 - 8]
xor ebx, ebx
add edi, 1
mov ecx, ebp
mov eax, esi
shr eax, cl
mov edx, ebx
shl edx, 4
and eax, 0xf
add edx, eax
mov ecx, edi
shl edx, cl
sub ebp, 4
mov dword [esp + ebx*4 + 0x15c], edx
add ebx, 1
cmp dword [esp + 0x30], ebx
jg 0x775af0
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x30]
sub eax, 0x100
shl edx, 7
sub eax, edx
mov edx, eax
sar edx, 0x1f
add edx, eax
and eax, 0xffff
shl edx, 0x10
or edx, eax
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x44]
test edx, edx
jle 0x7759b9
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x34], 0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x24], edx
mov edi, edx
sar eax, 0x1f
shr eax, 0x1e
add eax, dword [esp + 0x4c]
sar eax, 2
lea ecx, [eax*4 - 4]
mov dword [esp + 8], eax
mov dword [esp], ecx
mov eax, dword [esp + 8]
xor ebp, ebp
test eax, eax
jle 0x775c9e
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x3c]
mov edx, dword [eax + ebp*4]
mov eax, edx
and edx, 0xff00ff
and eax, 0xff00ff00
add ebx, edx
shr eax, 8
add esi, eax
cmp byte [esp + 0x17], 0
je 0x775bed
xor ecx, ecx
lea esi, [esi]
mov eax, dword [esp + ecx*4 + 0x15c]
add ecx, 1
mov edx, dword [edi + eax*4]
xor edx, 0x80808080
mov eax, edx
and edx, 0xff00ff
and eax, 0xff00ff00
add ebx, edx
shr eax, 8
add esi, eax
cmp dword [esp + 0x30], ecx
jg 0x775bc0
test esi, 0xff00ff00
je 0x775c30
lea edx, [esi + 0x7f007f00]
mov eax, edx
not eax
shr eax, 0xf
shr esi, 0xf
and eax, 0x10001
and esi, 0x10001
or eax, 0x1000100
or esi, 0x1000100
sub eax, 0x10001
sub esi, 0x10001
or eax, edx
and esi, 0xff00ff
and esi, eax
test ebx, 0xff00ff00
je 0x775c73
lea edx, [ebx + 0x7f007f00]
mov eax, edx
not eax
shr eax, 0xf
shr ebx, 0xf
and eax, 0x10001
and ebx, 0x10001
or eax, 0x1000100
or ebx, 0x1000100
sub eax, 0x10001
sub ebx, 0x10001
or eax, edx
and ebx, 0xff00ff
and ebx, eax
mov edx, dword [esp + 0x20]
shl esi, 8
add edi, 4
or ebx, esi
mov dword [edx + ebp*4], ebx
add ebp, 1
cmp ebp, dword [esp + 8]
jne 0x775b91
mov ecx, dword [esp + 0x24]
mov eax, dword [esp]
lea ecx, [ecx + eax + 4]
mov dword [esp + 0x24], ecx
add dword [esp + 0x34], 1
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x34], eax
je 0x7759b9
mov edx, dword [esp + 0x1c]
add dword [esp + 0x20], edx
mov edi, dword [esp + 0x24]
jmp 0x775b83
xor eax, eax
jmp 0x775a19
mov ecx, dword [esp + 4]
add ebx, esi
mov eax, ebx
sar eax, 3
mov eax, dword [ecx + eax]
mov ecx, ebx
and ecx, 7
bswap eax
shl eax, cl
mov ecx, edx
shr eax, cl
add eax, dword [esp + 0x40]
lea eax, [edi + eax*4]
movsx edx, word [eax]
mov dword [esp + 0x40], edx
movsx edx, word [eax + 2]
jmp 0x775a92