Function at 0x70e47528
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 0x70e47544
mov al, 1
jmp 0x70e47ae9
mov eax, dword [ebp + 0x10]
push ebx
push esi
push 8
pop esi
cmp eax, esi
ja 0x70e47596
cmp eax, ecx
jne 0x70e47596
mov edx, dword [edx + 0x44]
imul edi, eax
mov esi, dword [ebp + 0xc]
add edi, 7
shr edi, 3
test edx, edx
je 0x70e4757e
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 0x70e4756a
jmp 0x70e47ae5
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 0x70e47ae5
push 2
pop ebx
sub eax, ebx
je 0x70e47a21
sub eax, ebx
je 0x70e4787f
push 4
pop ebx
sub eax, ebx
je 0x70e477f7
sub eax, esi
je 0x70e47769
sub eax, esi
je 0x70e4772f
sub eax, esi
jne 0x70e47a26
cmp ecx, 0x18
jne 0x70e47679
mov ecx, dword [ebp + 0xc]
test cl, 3
mov eax, dword [ebp + 8]
jne 0x70e47633
cmp byte [edx + 0x8f], 0
jne 0x70e47612
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 0x70e475e9
jmp 0x70e47ae5
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 0x70e4760f
jmp 0x70e47ae5
cmp byte [edx + 0x8f], 0
je 0x70e47659
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 0x70e4763c
jmp 0x70e47ae5
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 0x70e4765c
jmp 0x70e47ae5
cmp ecx, 0x20
jne 0x70e47a26
cmp byte [edx + 0x8f], 0
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
je 0x70e476e5
test al, 3
jne 0x70e476b7
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 0x70e47697
jmp 0x70e47ae5
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 0x70e476b7
jmp 0x70e47ae5
test al, 3
jne 0x70e47701
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 0x70e476ed
jmp 0x70e47ae5
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 0x70e47701
jmp 0x70e47ae5
cmp ecx, 0x18
jne 0x70e47a26
cmp byte [edx + 0x8f], 0
je 0x70e47ae5
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 0x70e4774b
jmp 0x70e47ae5
cmp ecx, 0x18
jne 0x70e47a26
mov eax, dword [edx + 0x3c]
test eax, eax
mov dword [ebp - 8], eax
je 0x70e47ae5
mov ecx, dword [edx + 0x40]
test ecx, ecx
mov dword [ebp - 4], ecx
je 0x70e47ae5
mov edx, dword [ebp + 8]
and dword [ebp + 8], 0
mov esi, dword [ebp + 0xc]
mov dword [ebp + 0x10], edx
xor edx, edx
jmp 0x70e477a5
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 0x70e477dd
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 0x70e4779f
test edx, edx
jbe 0x70e47ae5
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
mov dword [ecx], eax
jmp 0x70e47ae5
mov edx, dword [edx + 0x44]
xor esi, esi
inc esi
mov ebx, esi
shl esi, cl
dec esi
test edx, edx
je 0x70e47836
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 0x70e4782c
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 0x70e47806
jmp 0x70e4785d
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 0x70e47858
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [eax], bl
xor ebx, ebx
inc ebx
dec edi
test edi, edi
jg 0x70e47836
xor eax, eax
inc eax
cmp ebx, eax
jbe 0x70e47ae7
mov esi, 0x100
jmp 0x70e47871
shl ebx, cl
cmp ebx, esi
jb 0x70e4786f
mov ecx, dword [ebp + 8]
mov byte [ecx], bl
jmp 0x70e47ae7
cmp ecx, ebx
jne 0x70e47964
mov edx, dword [edx + 0x44]
test edx, edx
mov esi, dword [ebp + 0xc]
je 0x70e47903
cmp edi, ebx
jle 0x70e478dc
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 0x70e478a4
test edi, edi
jle 0x70e47ae5
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 0x70e47ae5
cmp edi, ebx
mov edx, dword [ebp + 8]
jle 0x70e47944
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 0x70e47919
test edi, edi
jle 0x70e47ae5
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 0x70e47ae5
xor esi, esi
inc esi
cmp ecx, esi
jne 0x70e47a26
mov edx, dword [edx + 0x44]
test edx, edx
je 0x70e479cf
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 0x70e479a8
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 0x70e4797b
cmp ebx, 1
jbe 0x70e47ae5
mov esi, 0x100
jmp 0x70e479c1
shl ebx, 2
cmp ebx, esi
jb 0x70e479be
mov eax, dword [ebp + 8]
mov byte [eax], bl
jmp 0x70e47ae5
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 0x70e479fb
mov ecx, dword [ebp + 8]
inc dword [ebp + 8]
mov byte [ecx], dl
mov edx, esi
dec edi
dec edi
test edi, edi
jg 0x70e479d4
cmp edx, esi
jbe 0x70e47ae5
mov esi, 0x100
jmp 0x70e47a13
shl edx, 2
cmp edx, esi
jb 0x70e47a10
mov eax, dword [ebp + 8]
mov byte [eax], dl
jmp 0x70e47ae5
cmp ecx, 1
je 0x70e47a2d
xor al, al
jmp 0x70e47ae7
mov esi, dword [edx + 0x44]
test esi, esi
je 0x70e47a92
cmp edi, 4
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
jle 0x70e47a7a
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 + 0x70d94bb8]
mov bl, byte [ebx + 0x70d94bb8]
and al, 0xf
shl bl, 4
add al, bl
mov byte [edx], al
inc edx
inc ecx
inc ecx
dec dword [ebp + 0x10]
jne 0x70e47a4e
test edi, edi
jle 0x70e47ae5
movzx eax, byte [ecx]
movzx eax, byte [eax + esi]
mov al, byte [eax + 0x70d94bb8]
shl al, 4
mov byte [edx], al
jmp 0x70e47ae5
cmp edi, 4
mov esi, dword [ebp + 8]
jle 0x70e47ad0
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 + 0x70d94bb8]
mov bl, byte [ebx + 0x70d94bb8]
and dl, 0xf
shl bl, 4
add dl, bl
mov byte [esi], dl
inc esi
inc ecx
inc ecx
dec eax
jne 0x70e47aab
jmp 0x70e47ad3
mov ecx, dword [ebp + 0xc]
test edi, edi
jle 0x70e47ae5
movzx eax, byte [ecx]
mov al, byte [eax + 0x70d94bb8]
shl al, 4
mov byte [esi], al
mov al, 1
pop esi
pop ebx
pop edi
leave
ret 0xc