Function at 0x70e475a0
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 0x70e475bc
mov al, 1
jmp 0x70e47b61
mov eax, dword [ebp + 0x10]
push ebx
push esi
push 8
pop esi
cmp eax, esi
ja 0x70e4760e
cmp eax, ecx
jne 0x70e4760e
mov edx, dword [edx + 0x44]
imul edi, eax
mov esi, dword [ebp + 0xc]
add edi, 7
shr edi, 3
test edx, edx
je 0x70e475f6
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 0x70e475e2
jmp 0x70e47b5d
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 0x70e47b5d
push 2
pop ebx
sub eax, ebx
je 0x70e47a99
sub eax, ebx
je 0x70e478f7
push 4
pop ebx
sub eax, ebx
je 0x70e4786f
sub eax, esi
je 0x70e477e1
sub eax, esi
je 0x70e477a7
sub eax, esi
jne 0x70e47a9e
cmp ecx, 0x18
jne 0x70e476f1
mov ecx, dword [ebp + 0xc]
test cl, 3
mov eax, dword [ebp + 8]
jne 0x70e476ab
cmp byte [edx + 0x8f], 0
jne 0x70e4768a
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 0x70e47661
jmp 0x70e47b5d
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 0x70e47687
jmp 0x70e47b5d
cmp byte [edx + 0x8f], 0
je 0x70e476d1
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 0x70e476b4
jmp 0x70e47b5d
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 0x70e476d4
jmp 0x70e47b5d
cmp ecx, 0x20
jne 0x70e47a9e
cmp byte [edx + 0x8f], 0
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
je 0x70e4775d
test al, 3
jne 0x70e4772f
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 0x70e4770f
jmp 0x70e47b5d
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 0x70e4772f
jmp 0x70e47b5d
test al, 3
jne 0x70e47779
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 0x70e47765
jmp 0x70e47b5d
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 0x70e47779
jmp 0x70e47b5d
cmp ecx, 0x18
jne 0x70e47a9e
cmp byte [edx + 0x8f], 0
je 0x70e47b5d
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 0x70e477c3
jmp 0x70e47b5d
cmp ecx, 0x18
jne 0x70e47a9e
mov eax, dword [edx + 0x3c]
test eax, eax
mov dword [ebp - 8], eax
je 0x70e47b5d
mov ecx, dword [edx + 0x40]
test ecx, ecx
mov dword [ebp - 4], ecx
je 0x70e47b5d
mov edx, dword [ebp + 8]
and dword [ebp + 8], 0
mov esi, dword [ebp + 0xc]
mov dword [ebp + 0x10], edx
xor edx, edx
jmp 0x70e4781d
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 0x70e47855
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 0x70e47817
test edx, edx
jbe 0x70e47b5d
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
mov dword [ecx], eax
jmp 0x70e47b5d
mov edx, dword [edx + 0x44]
xor esi, esi
inc esi
mov ebx, esi
shl esi, cl
dec esi
test edx, edx
je 0x70e478ae
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 0x70e478a4
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 0x70e4787e
jmp 0x70e478d5
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 0x70e478d0
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [eax], bl
xor ebx, ebx
inc ebx
dec edi
test edi, edi
jg 0x70e478ae
xor eax, eax
inc eax
cmp ebx, eax
jbe 0x70e47b5f
mov esi, 0x100
jmp 0x70e478e9
shl ebx, cl
cmp ebx, esi
jb 0x70e478e7
mov ecx, dword [ebp + 8]
mov byte [ecx], bl
jmp 0x70e47b5f
cmp ecx, ebx
jne 0x70e479dc
mov edx, dword [edx + 0x44]
test edx, edx
mov esi, dword [ebp + 0xc]
je 0x70e4797b
cmp edi, ebx
jle 0x70e47954
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 0x70e4791c
test edi, edi
jle 0x70e47b5d
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 0x70e47b5d
cmp edi, ebx
mov edx, dword [ebp + 8]
jle 0x70e479bc
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 0x70e47991
test edi, edi
jle 0x70e47b5d
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 0x70e47b5d
xor esi, esi
inc esi
cmp ecx, esi
jne 0x70e47a9e
mov edx, dword [edx + 0x44]
test edx, edx
je 0x70e47a47
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 0x70e47a20
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 0x70e479f3
cmp ebx, 1
jbe 0x70e47b5d
mov esi, 0x100
jmp 0x70e47a39
shl ebx, 2
cmp ebx, esi
jb 0x70e47a36
mov eax, dword [ebp + 8]
mov byte [eax], bl
jmp 0x70e47b5d
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 0x70e47a73
mov ecx, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [ecx], dl
mov edx, esi
dec edi
dec edi
test edi, edi
jg 0x70e47a4c
cmp edx, esi
jbe 0x70e47b5d
mov esi, 0x100
jmp 0x70e47a8b
shl edx, 2
cmp edx, esi
jb 0x70e47a88
mov eax, dword [ebp + 8]
mov byte [eax], dl
jmp 0x70e47b5d
cmp ecx, 1
je 0x70e47aa5
xor al, al
jmp 0x70e47b5f
mov esi, dword [edx + 0x44]
test esi, esi
je 0x70e47b0a
cmp edi, 4
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
jle 0x70e47af2
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 + 0x70d94c38]
mov bl, byte [ebx + 0x70d94c38]
and al, 0xf
shl bl, 4
add al, bl
mov byte [edx], al
inc edx
inc ecx
inc ecx
dec dword [ebp + 0x10]
jne 0x70e47ac6
test edi, edi
jle 0x70e47b5d
movzx eax, byte [ecx]
movzx eax, byte [eax + esi]
mov al, byte [eax + 0x70d94c38]
shl al, 4
mov byte [edx], al
jmp 0x70e47b5d
cmp edi, 4
mov esi, dword [ebp + 8]
jle 0x70e47b48
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 + 0x70d94c38]
mov bl, byte [ebx + 0x70d94c38]
and dl, 0xf
shl bl, 4
add dl, bl
mov byte [esi], dl
inc esi
inc ecx
inc ecx
dec eax
jne 0x70e47b23
jmp 0x70e47b4b
mov ecx, dword [ebp + 0xc]
test edi, edi
jle 0x70e47b5d
movzx eax, byte [ecx]
mov al, byte [eax + 0x70d94c38]
shl al, 4
mov byte [esi], al
mov al, 1
pop esi
pop ebx
pop edi
leave
ret 0xc