Function at 0xffd70de
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov eax, dword [esi + 4]
push edi
xor edi, edi
sub eax, 0x8005
mov dword [ebp - 0xc], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x18], edi
je 0xffd7263
sub eax, 4
je 0xffd7115
mov esi, 0x80090008
jmp 0xffd74b7
test byte [esi + 0x1c], 1
jne 0xffd7243
lea eax, [ebp + 8]
push eax
push 2
push dword [ebp + 8]
push dword [esi + 0x10]
call fcn.0ffdf839
cmp eax, edi
jne 0xffd728a
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xc]
push 0x40
pop edi
cmp ecx, edi
jbe 0xffd71bb
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
push dword [esi + 0x18]
call fcn.0ffd6c58
test eax, eax
jne 0xffd7171
mov eax, dword [ebp + 8]
push dword [eax + 0xc]
push dword [eax + 0x10]
push dword [ebp - 0x10]
push dword [esi + 0x18]
call fcn.0ffd6fcf
test eax, eax
je 0xffd7178
mov esi, eax
jmp 0xffd74a9
push edi
call fcn.0ffe82b0
mov ebx, eax
test ebx, ebx
mov dword [ebp - 0xc], ebx
je 0xffd71d7
lea eax, [ebp - 4]
push eax
push ebx
push dword [ebp - 0x10]
mov dword [ebp - 4], edi
push 0
push dword [esi + 0x18]
call fcn.0ffd9cac
test eax, eax
jne 0xffd725c
xor ecx, ecx
mov edx, dword [esi + 0x20]
mov dl, byte [edx + ecx]
lea eax, [ecx + ebx]
xor byte [eax], dl
inc ecx
cmp ecx, edi
jb 0xffd71a6
mov dword [ebp - 4], edi
jmp 0xffd7214
mov eax, dword [esi + 0x24]
cmp ecx, eax
mov dword [ebp - 4], eax
jb 0xffd71c8
mov dword [ebp - 4], ecx
push dword [ebp - 4]
call fcn.0ffe82b0
test eax, eax
mov dword [ebp - 0xc], eax
jne 0xffd71df
push 8
pop esi
jmp 0xffd749b
mov ecx, dword [esi + 0x24]
mov esi, dword [esi + 0x20]
mov edx, ecx
shr ecx, 2
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [ebp + 8]
xor ecx, ecx
cmp dword [edx + 0xc], ecx
jbe 0xffd7211
mov edx, dword [edx + 0x10]
mov dl, byte [edx + ecx]
xor byte [ecx + eax], dl
mov edx, dword [ebp + 8]
inc ecx
cmp ecx, dword [edx + 0xc]
jb 0xffd71ff
mov esi, dword [ebp + 0xc]
push dword [ebp - 4]
push dword [ebp - 0xc]
push dword [esi + 0xc]
push dword [esi + 0x18]
call fcn.0ffd6fcf
test eax, eax
jne 0xffd725c
push dword [ebp - 4]
or dword [esi + 0x1c], 1
push dword [ebp - 0xc]
call fcn.0ffde663
push dword [ebp - 0x18]
push dword [ebp - 0x10]
call fcn.0ffde663
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [esi + 0xc]
push dword [esi + 0x18]
call fcn.0ffd6fcf
test eax, eax
je 0xffd748b
mov esi, eax
jmp 0xffd749b
mov ebx, dword [esi + 0xc]
cmp dword [ebx + 0x24], edi
je 0xffd7275
mov esi, 0x8009000c
jmp 0xffd74b7
lea eax, [ebp + 8]
push eax
push 2
push dword [ebp + 8]
push dword [esi + 0x10]
call fcn.0ffdf839
cmp eax, edi
je 0xffd729f
cmp eax, 0x80090020
jne 0xffd7382
mov esi, 0x80090003
jmp 0xffd74b7
mov eax, dword [ebx]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
mov ecx, dword [ecx + 0x78]
lea esi, [eax + edx]
cmp esi, ecx
mov esi, dword [ebp + 0x10]
lea edi, [eax + ebx + 0x14]
ja 0xffd72d1
mov ecx, edx
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]
add dword [ebx], edx
xor esi, esi
jmp 0xffd74b7
sub ecx, eax
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 eax, dword [ebp + 8]
mov eax, dword [eax + 0x78]
mov ecx, dword [ebx]
mov esi, eax
sub esi, ecx
add esi, dword [ebp + 0x10]
mov edi, ecx
mov dword [ebx], eax
mov ecx, dword [ebp + 8]
sub edi, eax
mov eax, dword [ecx + 4]
add edi, edx
cmp eax, 0x6601
mov dword [ebp + 0xc], edi
mov dword [ebp + 0x14], esi
je 0xffd7368
cmp eax, 0x6602
je 0xffd7355
cmp eax, 0x6603
je 0xffd7342
cmp eax, 0x6609
je 0xffd7342
cmp eax, 0x660d
jbe 0xffd7389
cmp eax, 0x6610
ja 0xffd7389
push 0x10
push ebx
lea eax, [ebx + 0x14]
push eax
push 0
push dword [ecx + 0x78]
push ecx
push fcn.0ffe52a0
jmp 0xffd7379
push 0x10
push ebx
lea eax, [ebx + 0x14]
push eax
push 0
push 8
push ecx
push fcn.0ffe47e0
jmp 0xffd7379
push 0x10
push ebx
lea eax, [ebx + 0x14]
push eax
push 0
push 8
push ecx
push fcn.0ffe3a00
jmp 0xffd7379
push 0x10
push ebx
lea eax, [ebx + 0x14]
push eax
push 0
push 8
push ecx
push fcn.0ffe2960
call fcn.0ffd6040
test eax, eax
je 0xffd7389
mov esi, eax
jmp 0xffd74b7
and dword [ebx], 0
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x78]
xor edx, edx
mov eax, edi
div ecx
test edx, edx
mov dword [ebp + 0x10], edx
jne 0xffd73a2
mov dword [ebp + 0x10], ecx
push edi
call fcn.0ffe82b0
test eax, eax
mov dword [ebp - 8], eax
jne 0xffd73b7
push 8
pop esi
jmp 0xffd748d
mov edx, edi
sub edx, dword [ebp + 0x10]
mov edi, eax
mov ecx, edx
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 ecx, dword [ebp + 8]
mov dword [ebp - 0x14], edx
mov edx, dword [ecx + 4]
cmp edx, 0x6601
je 0xffd7455
cmp edx, 0x6602
je 0xffd743f
cmp edx, 0x6603
je 0xffd7429
cmp edx, 0x6609
je 0xffd7429
cmp edx, 0x660d
jbe 0xffd746b
cmp edx, 0x6610
ja 0xffd746b
push dword [ebp + 0xc]
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 8]
push 0
push dword [ecx + 0x78]
push ecx
push fcn.0ffe52a0
call fcn.0ffd6040
test eax, eax
je 0xffd746b
mov esi, eax
jmp 0xffd748d
push dword [ebp + 0xc]
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 8]
push 0
push 8
push ecx
push fcn.0ffe47e0
jmp 0xffd741c
push dword [ebp + 0xc]
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 8]
push 0
push 8
push ecx
push fcn.0ffe3a00
jmp 0xffd741c
push dword [ebp + 0xc]
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 8]
push 0
push 8
push ecx
push fcn.0ffe2960
jmp 0xffd741c
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
add esi, edx
mov ecx, eax
mov edx, ecx
shr ecx, 2
lea edi, [ebx + 0x14]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [ebx], eax
xor esi, esi
cmp dword [ebp - 8], 0
je 0xffd749b
push dword [ebp - 8]
call fcn.0ffe82e0
cmp dword [ebp - 0xc], 0
je 0xffd74a9
push dword [ebp - 0xc]
call fcn.0ffe82e0
cmp dword [ebp - 0x10], 0
je 0xffd74b7
push dword [ebp - 0x10]
call fcn.0ffe82e0
pop edi
mov eax, esi
pop esi
pop ebx
leave
ret 0x10