Function at 0xa79bf1
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
mov edx, ecx
mov ecx, dword [edx + 0x28]
push edi
mov edi, dword [edx + 0x1c]
test edi, edi
mov dword [ebp - 4], ecx
jg 0xa79c0d
mov al, 1
jmp 0xa7a1b1
mov eax, dword [ebp + 0x10]
push esi
push 8
pop esi
cmp eax, esi
ja 0xa79c5d
cmp eax, ecx
jne 0xa79c5d
mov edx, dword [edx + 0x44]
imul edi, eax
mov esi, dword [ebp + 0xc]
add edi, 7
shr edi, 3
test edx, edx
je 0xa79c43
mov eax, dword [ebp + 8]
movzx ecx, byte [esi]
mov cl, byte [ecx + edx]
mov byte [eax], cl
inc eax
inc esi
dec edi
test edi, edi
jg 0xa79c32
jmp 0xa79c56
mov ecx, edi
mov edi, dword [ebp + 8]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov al, 1
jmp 0xa7a1b0
push ebx
push 2
pop ebx
sub eax, ebx
je 0xa7a0e9
sub eax, ebx
je 0xa79f47
push 4
pop ebx
sub eax, ebx
je 0xa79ebf
sub eax, esi
je 0xa79e31
sub eax, esi
je 0xa79df7
sub eax, esi
jne 0xa7a0ee
cmp ecx, 0x18
jne 0xa79d41
mov ecx, dword [ebp + 0xc]
test cl, 3
mov eax, dword [ebp + 8]
jne 0xa79cfb
cmp byte [edx + 0x8f], 0
jne 0xa79cda
mov esi, dword [ecx]
mov edx, esi
shr edx, 8
mov byte [eax], dl
add ecx, ebx
inc eax
mov edx, esi
shr edx, 0x10
mov byte [eax], dl
inc eax
mov edx, esi
shr edx, 0x18
mov byte [eax], dl
inc eax
dec edi
test edi, edi
jg 0xa79cb1
jmp 0xa7a1ad
push 4
pop ebx
mov edx, dword [ecx]
add ecx, ebx
mov ebx, edx
shr ebx, 0x10
mov byte [eax], bl
inc eax
mov ebx, edx
shr ebx, 8
mov byte [eax], bl
inc eax
mov byte [eax], dl
inc eax
dec edi
test edi, edi
jg 0xa79cd7
jmp 0xa7a1ad
cmp byte [edx + 0x8f], 0
je 0xa79d21
mov dl, byte [ecx + 2]
mov byte [eax], dl
mov dl, byte [ecx + 1]
inc eax
mov byte [eax], dl
mov dl, byte [ecx]
inc eax
mov byte [eax], dl
inc eax
add ecx, ebx
dec edi
test edi, edi
jg 0xa79d04
jmp 0xa7a1ad
add ecx, 2
mov dl, byte [ecx - 1]
mov byte [eax], dl
mov dl, byte [ecx]
inc eax
mov byte [eax], dl
mov dl, byte [ecx + 1]
inc eax
mov byte [eax], dl
inc eax
add ecx, ebx
dec edi
test edi, edi
jg 0xa79d24
jmp 0xa7a1ad
cmp ecx, 0x20
jne 0xa7a0ee
cmp byte [edx + 0x8f], 0
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
je 0xa79dad
test al, 3
jne 0xa79d7f
sub eax, ecx
mov edx, dword [ecx + eax]
mov esi, edx
ror esi, 0x10
xor esi, edx
and esi, 0xff00ff
xor esi, edx
mov dword [ecx], esi
add ecx, ebx
dec edi
test edi, edi
jg 0xa79d5f
jmp 0xa7a1ad
movzx edx, byte [eax + 3]
movzx esi, byte [eax]
shl edx, 8
add edx, esi
movzx esi, byte [eax + 1]
shl edx, 8
add edx, esi
movzx esi, byte [eax + 2]
shl edx, 8
add edx, esi
mov dword [ecx], edx
add ecx, ebx
add eax, ebx
dec edi
test edi, edi
jg 0xa79d7f
jmp 0xa7a1ad
test al, 3
jne 0xa79dc9
mov edx, eax
sub edx, ecx
mov eax, dword [edx + ecx]
ror eax, 8
mov dword [ecx], eax
add ecx, ebx
dec edi
test edi, edi
jg 0xa79db5
jmp 0xa7a1ad
movzx edx, byte [eax]
movzx esi, byte [eax + 3]
shl edx, 8
add edx, esi
movzx esi, byte [eax + 2]
shl edx, 8
add edx, esi
movzx esi, byte [eax + 1]
shl edx, 8
add edx, esi
mov dword [ecx], edx
add ecx, ebx
add eax, ebx
dec edi
test edi, edi
jg 0xa79dc9
jmp 0xa7a1ad
cmp ecx, 0x18
jne 0xa7a0ee
cmp byte [edx + 0x8f], 0
je 0xa7a1ad
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dl, byte [ecx + 2]
mov byte [eax], dl
mov dl, byte [ecx + 1]
inc eax
mov byte [eax], dl
mov dl, byte [ecx]
inc eax
mov byte [eax], dl
inc eax
add ecx, 3
dec edi
test edi, edi
jg 0xa79e13
jmp 0xa7a1ad
cmp ecx, 0x18
jne 0xa7a0ee
mov eax, dword [edx + 0x3c]
test eax, eax
mov dword [ebp - 8], eax
je 0xa7a1ad
mov ecx, dword [edx + 0x40]
test ecx, ecx
mov dword [ebp - 4], ecx
je 0xa7a1ad
mov edx, dword [ebp + 8]
and dword [ebp + 8], 0
mov esi, dword [ebp + 0xc]
mov dword [ebp + 0x10], edx
xor edx, edx
jmp 0xa79e6d
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 8]
movzx ebx, byte [esi]
mov eax, dword [eax + ebx*4]
inc esi
movzx ebx, byte [esi]
add eax, dword [ecx + ebx*4]
mov ecx, edx
mov ebx, eax
shl ebx, cl
add edx, 0x18
inc esi
add dword [ebp + 8], ebx
cmp edx, 0x20
jb 0xa79ea5
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0x10]
add dword [ebp + 0x10], 4
mov dword [ebx], ecx
push 0x18
sub edx, 0x20
pop ecx
sub ecx, edx
shr eax, cl
mov dword [ebp + 8], eax
dec edi
test edi, edi
jg 0xa79e67
test edx, edx
jbe 0xa7a1ad
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
mov dword [ecx], eax
jmp 0xa7a1ad
mov edx, dword [edx + 0x44]
xor esi, esi
inc esi
mov ebx, esi
shl esi, cl
dec esi
test edx, edx
je 0xa79efe
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
movzx eax, byte [eax + edx]
shl ebx, cl
and eax, esi
add ebx, eax
inc dword [ebp + 0xc]
cmp ebx, 0xff
jbe 0xa79ef4
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [eax], bl
xor ebx, ebx
inc ebx
mov ecx, dword [ebp - 4]
dec edi
test edi, edi
jg 0xa79ece
jmp 0xa79f25
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
shl ebx, cl
and eax, esi
add ebx, eax
inc dword [ebp + 0xc]
cmp ebx, 0xff
jbe 0xa79f20
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [eax], bl
xor ebx, ebx
inc ebx
dec edi
test edi, edi
jg 0xa79efe
xor eax, eax
inc eax
cmp ebx, eax
jbe 0xa7a1af
mov esi, 0x100
jmp 0xa79f39
shl ebx, cl
cmp ebx, esi
jb 0xa79f37
mov ecx, dword [ebp + 8]
mov byte [ecx], bl
jmp 0xa7a1af
cmp ecx, ebx
jne 0xa7a02c
mov edx, dword [edx + 0x44]
test edx, edx
mov esi, dword [ebp + 0xc]
je 0xa79fcb
cmp edi, ebx
jle 0xa79fa4
lea eax, [edi - 3]
shr eax, 2
inc eax
mov dword [ebp + 0x10], eax
neg eax
lea edi, [edi + eax*4]
movzx eax, byte [esi]
mov al, byte [eax + edx]
mov bl, al
inc esi
movzx ecx, byte [esi]
mov cl, byte [ecx + edx]
and bl, 3
and al, 0xf0
shl bl, 2
add bl, al
mov al, cl
shr al, 2
shl bl, 2
and al, 0xc
add bl, al
mov eax, dword [ebp + 8]
and cl, 3
add bl, cl
inc esi
inc dword [ebp + 8]
dec dword [ebp + 0x10]
mov byte [eax], bl
jne 0xa79f6c
test edi, edi
jle 0xa7a1ad
movzx eax, byte [esi]
mov dl, byte [eax + edx]
mov ecx, dword [ebp + 8]
mov al, dl
and al, 3
shl al, 2
and dl, 0xf0
add al, dl
shl al, 2
mov byte [ecx], al
jmp 0xa7a1ad
cmp edi, ebx
mov edx, dword [ebp + 8]
jle 0xa7a00c
lea eax, [edi - 3]
shr eax, 2
inc eax
mov dword [ebp + 0x10], eax
neg eax
lea edi, [edi + eax*4]
mov al, byte [esi]
mov bl, al
and bl, 3
shl bl, 2
and al, 0xf0
add bl, al
inc esi
mov cl, byte [esi]
mov al, cl
shr al, 2
shl bl, 2
and al, 0xc
add bl, al
and cl, 3
add bl, cl
inc esi
mov byte [edx], bl
inc edx
dec dword [ebp + 0x10]
jne 0xa79fe1
test edi, edi
jle 0xa7a1ad
mov al, byte [esi]
mov cl, al
and cl, 3
shl cl, 2
and al, 0xf0
add cl, al
shl cl, 2
mov byte [edx], cl
jmp 0xa7a1ad
xor esi, esi
inc esi
cmp ecx, esi
jne 0xa7a0ee
mov edx, dword [edx + 0x44]
test edx, edx
je 0xa7a097
mov ebx, esi
mov esi, dword [ebp + 0xc]
movzx eax, byte [esi]
mov cl, byte [eax + edx]
movzx ecx, cl
mov eax, ecx
shr eax, 3
and eax, 2
and ecx, 1
add eax, ecx
lea ebx, [eax + ebx*4]
inc esi
cmp ebx, 0xff
jbe 0xa7a070
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [eax], bl
xor ebx, ebx
inc ebx
dec edi
dec edi
test edi, edi
jg 0xa7a043
cmp ebx, 1
jbe 0xa7a1ad
mov esi, 0x100
jmp 0xa7a089
shl ebx, 2
cmp ebx, esi
jb 0xa7a086
mov eax, dword [ebp + 8]
mov byte [eax], bl
jmp 0xa7a1ad
mov eax, dword [ebp + 0xc]
mov edx, esi
mov cl, byte [eax]
movzx ecx, cl
mov ebx, ecx
shr ebx, 3
and ebx, 2
and ecx, esi
add ebx, ecx
lea edx, [ebx + edx*4]
inc eax
cmp edx, 0xff
jbe 0xa7a0c3
mov ecx, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [ecx], dl
mov edx, esi
dec edi
dec edi
test edi, edi
jg 0xa7a09c
cmp edx, esi
jbe 0xa7a1ad
mov esi, 0x100
jmp 0xa7a0db
shl edx, 2
cmp edx, esi
jb 0xa7a0d8
mov eax, dword [ebp + 8]
mov byte [eax], dl
jmp 0xa7a1ad
cmp ecx, 1
je 0xa7a0f5
xor al, al
jmp 0xa7a1af
mov esi, dword [edx + 0x44]
test esi, esi
je 0xa7a15a
cmp edi, 4
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
jle 0xa7a142
lea eax, [edi - 5]
shr eax, 3
inc eax
mov dword [ebp + 0x10], eax
neg eax
lea edi, [edi + eax*8]
movzx eax, byte [ecx + 1]
movzx ebx, byte [ecx]
movzx eax, byte [eax + esi]
movzx ebx, byte [ebx + esi]
mov al, byte [eax + 0x398d3450]
mov bl, byte [ebx + 0x398d3450]
and al, 0xf
shl bl, 4
add al, bl
mov byte [edx], al
inc edx
inc ecx
inc ecx
dec dword [ebp + 0x10]
jne 0xa7a116
test edi, edi
jle 0xa7a1ad
movzx eax, byte [ecx]
movzx eax, byte [eax + esi]
mov al, byte [eax + 0x398d3450]
shl al, 4
mov byte [edx], al
jmp 0xa7a1ad
cmp edi, 4
mov esi, dword [ebp + 8]
jle 0xa7a198
lea eax, [edi - 5]
shr eax, 3
inc eax
mov ecx, eax
neg ecx
lea edi, [edi + ecx*8]
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + 1]
movzx ebx, byte [ecx]
mov dl, byte [edx + 0x398d3450]
mov bl, byte [ebx + 0x398d3450]
and dl, 0xf
shl bl, 4
add dl, bl
mov byte [esi], dl
inc esi
inc ecx
inc ecx
dec eax
jne 0xa7a173
jmp 0xa7a19b
mov ecx, dword [ebp + 0xc]
test edi, edi
jle 0xa7a1ad
movzx eax, byte [ecx]
mov al, byte [eax + 0x398d3450]
shl al, 4
mov byte [esi], al
mov al, 1
pop ebx
pop esi
pop edi
leave
ret 0xc