Function at 0x709bf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x5c
mov dword [ebp - 0x3c], eax
mov eax, dword [eax + 8]
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], ecx
test eax, eax
mov dword [ebp - 0x38], eax
je 0x709d6c
movzx edi, byte [edx]
mov edx, edi
test dl, dl
je 0x709d7c
mov edx, dword [ebp - 0x40]
mov eax, edi
mov dword [ebp - 0x2c], 0
lea esi, [esi]
imul ecx, dword [ebp - 0x2c], 0xf4243
movzx eax, al
xor ecx, eax
mov dword [ebp - 0x2c], ecx
movzx eax, byte [edx + 1]
add edx, 1
test al, al
jne 0x709c30
mov ebx, dword [ebp - 0x38]
mov eax, ecx
sub ebx, 1
mov dword [ebp - 0x14], ebx
and eax, ebx
mov ecx, ebx
mov edx, dword [ebp - 0x3c]
not ecx
mov esi, eax
mov ebx, dword [ebp - 0x2c]
mov edx, dword [edx]
and ecx, ebx
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x18], edx
xor edx, edx
mov ebx, dword [ebp - 0x18]
lea ecx, [esi*4]
mov dword [ebp - 0x1c], ecx
mov ebx, dword [ebx + esi*4]
test ebx, ebx
mov dword [ebp - 0x34], ebx
je 0x709ce7
mov eax, dword [ebx]
mov ebx, edi
cmp byte [eax], bl
jne 0x709cb7
test bl, bl
je 0x709d5a
mov ecx, eax
mov eax, dword [ebp - 0x40]
jmp 0x709cae
add ecx, 1
add eax, 1
test bl, bl
je 0x709d5a
movzx ebx, byte [eax + 1]
cmp bl, byte [ecx + 1]
je 0x709ca0
test dl, dl
jne 0x709cd5
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x54]
movzx ecx, byte [eax + 4]
mov eax, dword [ebp - 0x14]
sub ecx, 1
shr edx, cl
shr eax, 2
and edx, eax
or edx, 1
movzx eax, dl
cmp esi, eax
jae 0x709d65
add esi, dword [ebp - 0x38]
sub esi, eax
jmp 0x709c6f
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x709d5a
mov eax, dword [ebp - 0x3c]
movzx edx, byte [eax + 4]
mov eax, dword [eax + 0xc]
movzx ecx, dl
sub ecx, 1
shr eax, cl
test eax, eax
jne 0x709e1e
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x1c]
mov eax, dword [edx + 0x10]
add ebx, dword [edx]
mov dword [esp], ecx
call dword [eax]
mov edx, dword [ebp - 0x1c]
mov dword [ebx], eax
mov ebx, dword [ebp - 0x3c]
mov eax, dword [ebx]
mov eax, dword [eax + edx]
test eax, eax
je 0x709d73
mov ecx, dword [ebp - 0x44]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [esp + 8], ecx
call sub.msvcrt.dll_memset
mov eax, dword [ebx]
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x40]
mov eax, dword [eax + ebx]
add dword [ecx + 0xc], 1
mov dword [eax], edx
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
sub esi, eax
jmp 0x709c6f
mov eax, dword [ebp - 0x44]
test eax, eax
jne 0x709d93
mov dword [ebp - 0x34], 0
jmp 0x709d5a
sub eax, 1
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x14]
xor eax, eax
mov dword [ebp - 0x2c], 0
jmp 0x709c59
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ecx + 0x10]
mov byte [ecx + 4], 6
mov dword [ecx + 8], 0x40
mov dword [esp], 0x100
call dword [eax]
mov ebx, dword [ebp - 0x3c]
test eax, eax
mov dword [ebx], eax
je 0x709e0b
mov dword [esp + 8], 0x100
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll_memset
mov edx, dword [ebp - 0x40]
movzx eax, byte [edx]
xor edx, edx
test al, al
je 0x709e00
mov edx, dword [ebp - 0x40]
xor ecx, ecx
imul ecx, ecx, 0xf4243
movzx eax, al
xor ecx, eax
movzx eax, byte [edx + 1]
add edx, 1
test al, al
jne 0x709ddf
mov ebx, dword [ebp - 0x3c]
mov edx, dword [ebx + 8]
sub edx, 1
and edx, ecx
shl edx, 2
mov dword [ebp - 0x1c], edx
jmp 0x709d08
mov dword [ebx + 8], 0
mov dword [ebp - 0x34], 0
jmp 0x709d5a
add edx, 1
movzx eax, dl
mov byte [ebp - 0x25], dl
mov edx, dword [ebp - 0x3c]
mov ecx, eax
mov dword [ebp - 0x24], 1
shl dword [ebp - 0x24], cl
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x30], eax
mov eax, dword [edx + 0x10]
shl ebx, 2
mov dword [esp], ebx
call dword [eax]
test eax, eax
mov esi, eax
je 0x709d5a
mov ecx, dword [ebp - 0x24]
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], eax
sub ecx, 1
mov dword [ebp - 0x20], ecx
call sub.msvcrt.dll_memset
mov ebx, dword [ebp - 0x3c]
mov edi, dword [ebx + 8]
test edi, edi
je 0x709f33
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebx]
mov dword [ebp - 0x10], 0
not edx
sub ecx, 1
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x50], ecx
mov ebx, dword [ebp - 0x10]
mov edi, dword [eax + ebx*4]
test edi, edi
je 0x709f14
mov edx, dword [edi]
xor ebx, ebx
xor ecx, ecx
movzx eax, byte [edx]
test al, al
je 0x709ecd
mov ecx, edx
imul ebx, ebx, 0xf4243
movzx eax, al
xor ebx, eax
movzx eax, byte [ecx + 1]
add ecx, 1
test al, al
jne 0x709eb2
mov ecx, dword [ebp - 0x20]
and ecx, ebx
and ebx, dword [ebp - 0x4c]
xor edx, edx
mov dword [ebp - 0x58], ecx
lea eax, [esi + ecx*4]
mov ecx, dword [eax]
test ecx, ecx
je 0x709f12
test dl, dl
jne 0x709ef5
movzx ecx, byte [ebp - 0x50]
mov edx, ebx
mov eax, dword [ebp - 0x20]
shr edx, cl
shr eax, 2
and edx, eax
or edx, 1
movzx eax, dl
cmp dword [ebp - 0x58], eax
jae 0x709f2b
mov ecx, dword [ebp - 0x24]
add dword [ebp - 0x58], ecx
sub dword [ebp - 0x58], eax
mov ecx, dword [ebp - 0x58]
lea eax, [esi + ecx*4]
mov ecx, dword [eax]
test ecx, ecx
jne 0x709ede
mov dword [eax], edi
mov eax, dword [ebp - 0x3c]
add dword [ebp - 0x10], 1
mov ebx, dword [ebp - 0x10]
cmp dword [eax + 8], ebx
jbe 0x709f3b
mov eax, dword [ebp - 0x48]
jmp 0x709e99
sub dword [ebp - 0x58], eax
mov ecx, dword [ebp - 0x58]
jmp 0x709ed5
mov edx, dword [ebp - 0x3c]
mov edx, dword [edx]
mov dword [ebp - 0x48], edx
mov ecx, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x48]
mov eax, dword [ecx + 0x10]
mov dword [esp], ebx
call dword [eax + 8]
mov eax, dword [ebp - 0x3c]
movzx edx, byte [ebp - 0x25]
mov dword [eax], esi
mov byte [eax + 4], dl
mov edi, dword [ebp - 0x20]
xor edx, edx
mov ecx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x2c]
and ebx, dword [ebp - 0x20]
not edi
and edi, dword [ebp - 0x2c]
mov dword [eax + 8], ecx
mov ecx, dword [esi + ebx*4]
lea eax, [ebx*4]
mov dword [ebp - 0x1c], eax
test ecx, ecx
je 0x709d08
test dl, dl
jne 0x709f9a
mov ecx, dword [ebp - 0x30]
mov edx, edi
mov eax, dword [ebp - 0x20]
sub ecx, 1
shr edx, cl
shr eax, 2
and edx, eax
or edx, 1
movzx eax, dl
cmp ebx, eax
jae 0x709fa8
add ebx, dword [ebp - 0x24]
sub ebx, eax
jmp 0x709f6c
sub ebx, eax
jmp 0x709f6c