Function at 0x7a1c474b
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 0x7a1c4767
mov al, 1
jmp 0x7a1c4d0c
mov eax, dword [ebp + 0x10]
push ebx
push esi
push 8
pop esi
cmp eax, esi
ja 0x7a1c47b9
cmp eax, ecx
jne 0x7a1c47b9
mov edx, dword [edx + 0x44]
imul edi, eax
mov esi, dword [ebp + 0xc]
add edi, 7
shr edi, 3
test edx, edx
je 0x7a1c47a1
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 0x7a1c478d
jmp 0x7a1c4d08
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]
jmp 0x7a1c4d08
push 2
pop ebx
sub eax, ebx
je 0x7a1c4c44
sub eax, ebx
je 0x7a1c4aa2
push 4
pop ebx
sub eax, ebx
je 0x7a1c4a1a
sub eax, esi
je 0x7a1c498c
sub eax, esi
je 0x7a1c4952
sub eax, esi
jne 0x7a1c4c49
cmp ecx, 0x18
jne 0x7a1c489c
mov ecx, dword [ebp + 0xc]
test cl, 3
mov eax, dword [ebp + 8]
jne 0x7a1c4856
cmp byte [edx + 0x8f], 0
jne 0x7a1c4835
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 0x7a1c480c
jmp 0x7a1c4d08
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 0x7a1c4832
jmp 0x7a1c4d08
cmp byte [edx + 0x8f], 0
je 0x7a1c487c
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 0x7a1c485f
jmp 0x7a1c4d08
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 0x7a1c487f
jmp 0x7a1c4d08
cmp ecx, 0x20
jne 0x7a1c4c49
cmp byte [edx + 0x8f], 0
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
je 0x7a1c4908
test al, 3
jne 0x7a1c48da
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 0x7a1c48ba
jmp 0x7a1c4d08
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 0x7a1c48da
jmp 0x7a1c4d08
test al, 3
jne 0x7a1c4924
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 0x7a1c4910
jmp 0x7a1c4d08
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 0x7a1c4924
jmp 0x7a1c4d08
cmp ecx, 0x18
jne 0x7a1c4c49
cmp byte [edx + 0x8f], 0
je 0x7a1c4d08
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 0x7a1c496e
jmp 0x7a1c4d08
cmp ecx, 0x18
jne 0x7a1c4c49
mov eax, dword [edx + 0x3c]
test eax, eax
mov dword [ebp - 8], eax
je 0x7a1c4d08
mov ecx, dword [edx + 0x40]
test ecx, ecx
mov dword [ebp - 4], ecx
je 0x7a1c4d08
mov edx, dword [ebp + 8]
and dword [ebp + 8], 0
mov esi, dword [ebp + 0xc]
mov dword [ebp + 0x10], edx
xor edx, edx
jmp 0x7a1c49c8
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 0x7a1c4a00
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 0x7a1c49c2
test edx, edx
jbe 0x7a1c4d08
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
mov dword [ecx], eax
jmp 0x7a1c4d08
mov edx, dword [edx + 0x44]
xor esi, esi
inc esi
mov ebx, esi
shl esi, cl
dec esi
test edx, edx
je 0x7a1c4a59
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 0x7a1c4a4f
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 0x7a1c4a29
jmp 0x7a1c4a80
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 0x7a1c4a7b
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [eax], bl
xor ebx, ebx
inc ebx
dec edi
test edi, edi
jg 0x7a1c4a59
xor eax, eax
inc eax
cmp ebx, eax
jbe 0x7a1c4d0a
mov esi, 0x100
jmp 0x7a1c4a94
shl ebx, cl
cmp ebx, esi
jb 0x7a1c4a92
mov ecx, dword [ebp + 8]
mov byte [ecx], bl
jmp 0x7a1c4d0a
cmp ecx, ebx
jne 0x7a1c4b87
mov edx, dword [edx + 0x44]
test edx, edx
mov esi, dword [ebp + 0xc]
je 0x7a1c4b26
cmp edi, ebx
jle 0x7a1c4aff
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 0x7a1c4ac7
test edi, edi
jle 0x7a1c4d08
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 0x7a1c4d08
cmp edi, ebx
mov edx, dword [ebp + 8]
jle 0x7a1c4b67
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 0x7a1c4b3c
test edi, edi
jle 0x7a1c4d08
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 0x7a1c4d08
xor esi, esi
inc esi
cmp ecx, esi
jne 0x7a1c4c49
mov edx, dword [edx + 0x44]
test edx, edx
je 0x7a1c4bf2
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 0x7a1c4bcb
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 0x7a1c4b9e
cmp ebx, 1
jbe 0x7a1c4d08
mov esi, 0x100
jmp 0x7a1c4be4
shl ebx, 2
cmp ebx, esi
jb 0x7a1c4be1
mov eax, dword [ebp + 8]
mov byte [eax], bl
jmp 0x7a1c4d08
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 0x7a1c4c1e
mov ecx, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [ecx], dl
mov edx, esi
dec edi
dec edi
test edi, edi
jg 0x7a1c4bf7
cmp edx, esi
jbe 0x7a1c4d08
mov esi, 0x100
jmp 0x7a1c4c36
shl edx, 2
cmp edx, esi
jb 0x7a1c4c33
mov eax, dword [ebp + 8]
mov byte [eax], dl
jmp 0x7a1c4d08
cmp ecx, 1
je 0x7a1c4c50
xor al, al
jmp 0x7a1c4d0a
mov esi, dword [edx + 0x44]
test esi, esi
je 0x7a1c4cb5
cmp edi, 4
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
jle 0x7a1c4c9d
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 + 0x7a2047a8]
mov bl, byte [ebx + 0x7a2047a8]
and al, 0xf
shl bl, 4
add al, bl
mov byte [edx], al
inc edx
inc ecx
inc ecx
dec dword [ebp + 0x10]
jne 0x7a1c4c71
test edi, edi
jle 0x7a1c4d08
movzx eax, byte [ecx]
movzx eax, byte [eax + esi]
mov al, byte [eax + 0x7a2047a8]
shl al, 4
mov byte [edx], al
jmp 0x7a1c4d08
cmp edi, 4
mov esi, dword [ebp + 8]
jle 0x7a1c4cf3
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 + 0x7a2047a8]
mov bl, byte [ebx + 0x7a2047a8]
and dl, 0xf
shl bl, 4
add dl, bl
mov byte [esi], dl
inc esi
inc ecx
inc ecx
dec eax
jne 0x7a1c4cce
jmp 0x7a1c4cf6
mov ecx, dword [ebp + 0xc]
test edi, edi
jle 0x7a1c4d08
movzx eax, byte [ecx]
mov al, byte [eax + 0x7a2047a8]
shl al, 4
mov byte [esi], al
mov al, 1
pop esi
pop ebx
pop edi
leave
ret 0xc