Function at 0xd86230
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov dword [esp + 0x2c], ecx
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x3c], 0x100000
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0xb8bbba85
mov dword [esp + 8], 0
xor edi, edi
mov esi, 0x65
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 4]
mov ebx, edi
xor ebx, 0xca0f841f
lea edx, [esi + ebx]
add edx, 0xffffff9b
and edx, ecx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add bl, cl
add bl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub bl, al
movzx eax, bl
add eax, esi
mov byte [esp + edi + 4], al
inc edi
add esi, 2
cmp edi, 8
jne 0xd86290
mov eax, dword [esp + 4]
mov ecx, dword [0xfcd99644]
test ecx, ecx
je 0xd86310
xor edx, edx
mov esi, dword [0xfcd99648]
mov edi, dword [esp + 0x2c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0xd86316
inc edx
cmp ecx, edx
jne 0xd86300
jmp 0xd86344
mov edi, dword [esp + 0x2c]
jmp 0xd86344
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0xd86344
lea eax, [esp + 0x3c]
lea edx, [esp + 0x14]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push ecx
push dword [0xfcd9964c]
call fcn.00d88a80
add esp, 0x24
test eax, eax
js 0xd86ad2
cmp dword [edi + 4], 0
je 0xd86a60
mov eax, dword [edi + 4]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 4], 0x41454744
mov byte [esp + 8], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 4]
lea esi, [ecx - 0x32c6d90f]
xor esi, edx
add esi, 0xec601fe1
mov edx, esi
and edx, 0x4a
xor esi, 0x4a
lea edx, [esi + edx*2]
add dl, 0x20
mov byte [esp + ecx + 4], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 5
jb 0xd863a0
mov ebx, 0x7fff
cmp eax, 2
je 0xd863e4
mov ebx, 0
mov eax, 0xfffeffff
mov esi, dword [ebp + 0x10]
je 0xd863f3
mov eax, SysReAllocString
mov edx, dword [esp + 4]
mov ecx, edx
sar ecx, 0x1f
mov dword [esp + 0x24], eax
cmp edx, eax
mov dword [esp + 0x38], ecx
mov eax, ecx
sbb eax, ebx
jae 0xd869d0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x10], 0
mov dword [esp], 0
mov dword [esp + 0x20], ebx
jmp 0xd86454
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
add edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
adc ecx, dword [esp + 0x54]
cmp edx, eax
mov dword [esp + 0x38], ecx
mov eax, ecx
sbb eax, ebx
jae 0xd869d0
mov dword [esp + 0x30], edx
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x5c]
push eax
push dword [esp + 0x48]
push edx
call fcn.00d85d40
mov edx, dword [esp + 0x30]
cmp eax, 0xbfffffff
ja 0xd869d0
test eax, eax
js 0xd86430
cmp dword [esp + 0x60], 0x1000
mov eax, dword [esp + 0x24]
jne 0xd86434
test byte [esp + 0x5c], 0x66
je 0xd86434
mov eax, dword [esp + 0x48]
mov dword [esp + 0x34], eax
cmp dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x4c]
mov eax, 0
mov dword [esp + 0x40], ecx
sbb eax, ecx
jae 0xd86673
mov dword [esp + 4], 0xb8bbba85
mov dword [esp + 8], 0
xor edi, edi
mov esi, 0x65
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi + 4]
mov ecx, edi
xor ecx, 0xca0f841f
lea edx, [esi + ecx]
add edx, 0xffffff9b
and edx, ebx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add cl, bl
add cl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, esi
mov byte [esp + edi + 4], al
inc edi
add esi, 2
cmp edi, 8
jne 0xd864e0
mov eax, dword [0xfcd99644]
test eax, eax
je 0xd8657a
mov ecx, dword [esp + 4]
xor edx, edx
mov esi, dword [0xfcd99648]
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0xd86550
inc edx
cmp eax, edx
jne 0xd86540
jmp 0xd8657a
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0xd8657a
push 0x8000
lea ecx, [esp + 0x48]
push ecx
lea ecx, [esp + 0x1c]
push ecx
push 0xffffffffffffffff
push 4
push eax
push dword [0xfcd9964c]
call fcn.00d88a80
add esp, 0x1c
mov dword [esp + 0x44], 0
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], eax
mov dword [esp + 4], 0xb8bbba85
mov dword [esp + 8], 0
xor edi, edi
mov esi, 0x65
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 4]
mov ebx, edi
xor ebx, 0xca0f841f
lea edx, [esi + ebx]
add edx, 0xffffff9b
and edx, ecx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add bl, cl
add bl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub bl, al
movzx eax, bl
add eax, esi
mov byte [esp + edi + 4], al
inc edi
add esi, 2
cmp edi, 8
jne 0xd865b0
mov eax, dword [esp + 4]
mov ecx, dword [0xfcd99644]
test ecx, ecx
je 0xd86630
xor edx, edx
mov esi, dword [0xfcd99648]
mov ebx, dword [esp + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0xd86636
inc edx
cmp ecx, edx
jne 0xd86620
jmp 0xd86664
mov ebx, dword [esp + 0x20]
jmp 0xd86664
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0xd86664
push 4
push 0x3000
lea eax, [esp + 0x44]
push eax
push 0
lea eax, [esp + 0x24]
push eax
push 0xffffffffffffffff
push 6
push ecx
push dword [0xfcd9964c]
call fcn.00d88a80
add esp, 0x24
test eax, eax
mov esi, dword [ebp + 0x10]
mov edx, dword [esp + 0x30]
js 0xd869d0
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x44]
push dword [esp + 0x3c]
push dword [esp + 0x20]
push dword [esp + 0x48]
push edx
call fcn.00d86080
test eax, eax
jns 0xd8669d
cmp eax, 0x8000000d
jne 0xd866ac
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
cmp eax, esi
sbb ecx, 0
jae 0xd866b8
mov eax, dword [esp + 0x24]
mov edx, dword [esp]
jmp 0xd869c8
push dword [ebp + 0x14]
push esi
push dword [ebp + 0xc]
push eax
push dword [esp + 0x24]
lea eax, [esp + 0x18]
push eax
call fcn.00d86b20
add esp, 0x18
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp + 0x58], ecx
cmp eax, ecx
je 0xd869a1
mov dword [esp + 0x64], eax
mov esi, eax
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x30]
mov edx, dword [esp]
jmp 0xd86748
push dword [esp + 0x10]
call fcn.00d581c0
add esp, 4
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
lea eax, [ecx + ebx*8]
mov dword [esp + 0x1c], eax
mov edx, ecx
mov eax, dword [esp + 0x18]
add edx, eax
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov dword [ecx + eax], edi
mov edi, eax
mov eax, dword [esp + 0x40]
mov dword [ecx + edi + 4], eax
add edx, 8
add esi, 4
cmp esi, dword [esp + 0x58]
je 0xd86962
mov edi, dword [esi]
sub edi, dword [esp + 0x14]
mov eax, edi
sar eax, 0x1f
add edi, ebx
mov dword [esp + 0x34], edi
adc eax, dword [esp + 0x38]
mov dword [esp + 0x40], eax
mov eax, edx
sub eax, ecx
cmp edx, dword [esp + 0x1c]
jne 0xd86727
mov dword [esp], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
mov ecx, eax
sar ecx, 3
lea eax, [ecx + 1]
mov ebx, ecx
shr ebx, 1
add ebx, ecx
cmp ebx, eax
ja 0xd8678a
mov ebx, eax
lea eax, [ebx*8]
push eax
call fcn.00d581b0
add esp, 4
mov ecx, eax
mov edx, dword [esp + 0x10]
test edx, edx
je 0xd86714
mov dword [esp + 0x1c], ebx
cmp ecx, edx
mov dword [esp + 0x28], ecx
jbe 0xd86872
cmp dword [esp], ecx
jbe 0xd86872
cmp dword [esp + 0x18], 0
je 0xd86700
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
add eax, edx
dec eax
mov ecx, dword [esp + 0x28]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0xd86804
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0xd867f0
add eax, edx
add ecx, edx
add edx, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
sub edi, dword [esp]
cmp edi, 0xfffffff8
ja 0xd86700
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0xd86820
jmp 0xd86700
mov ebx, dword [esp + 0x18]
mov ecx, ebx
shr ecx, 2
mov eax, edx
mov edi, dword [esp + 0x28]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, ebx
and ecx, 3
mov eax, ebx
and eax, 0xfffffffc
add edx, eax
add eax, dword [esp + 0x28]
mov ebx, ecx
not ebx
or ebx, 1
add ebx, ecx
shr ecx, 1
mov dword [esp], edx
mov edi, eax
mov dword [esp + 0x6c], esi
mov esi, dword [esp]
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov esi, dword [esp + 0x6c]
mov dword [esp], ebx
inc ebx
je 0xd86700
mov ecx, dword [esp + 0x18]
and ecx, 2
add eax, ecx
add edx, ecx
mov ecx, ebx
and ecx, 7
je 0xd868f6
mov dword [esp + 0x68], ebx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edx + edi]
mov byte [eax + edi], bl
inc edi
cmp ecx, edi
jne 0xd868e0
add edx, edi
add eax, edi
mov ebx, dword [esp + 0x68]
sub ebx, edi
cmp dword [esp], 7
jb 0xd86700
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edx + edi]
mov byte [eax + edi], cl
movzx ecx, byte [edx + edi + 1]
mov byte [eax + edi + 1], cl
movzx ecx, byte [edx + edi + 2]
mov byte [eax + edi + 2], cl
movzx ecx, byte [edx + edi + 3]
mov byte [eax + edi + 3], cl
movzx ecx, byte [edx + edi + 4]
mov byte [eax + edi + 4], cl
movzx ecx, byte [edx + edi + 5]
mov byte [eax + edi + 5], cl
movzx ecx, byte [edx + edi + 6]
mov byte [eax + edi + 6], cl
movzx ecx, byte [edx + edi + 7]
mov byte [eax + edi + 7], cl
add edi, 8
cmp ebx, edi
jne 0xd86910
jmp 0xd86700
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov esi, dword [esp + 0x1c]
mov dword [eax + 8], esi
mov eax, dword [esp + 0x64]
test eax, eax
je 0xd869b9
mov dword [esp + 0x10], ecx
cmp eax, dword [esp + 0x58]
mov esi, dword [ebp + 0x10]
je 0xd869c0
push eax
mov dword [esp + 4], edx
call fcn.00d581c0
mov edx, dword [esp + 4]
add esp, 4
mov dword [esp + 4], 0
jmp 0xd869c0
mov eax, dword [ebp + 8]
mov edx, dword [esp]
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
jmp 0xd869c4
mov dword [esp + 0x10], ecx
mov esi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov dword [esp], edx
jmp 0xd86434
mov dword [esp + 4], 0xb8bbba85
mov dword [esp + 8], 0
xor edi, edi
mov esi, 0x65
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 4]
mov ebx, edi
xor ebx, 0xca0f841f
lea edx, [esi + ebx]
add edx, 0xffffff9b
and edx, ecx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add bl, cl
add bl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub bl, al
movzx eax, bl
add eax, esi
mov byte [esp + edi + 4], al
inc edi
add esi, 2
cmp edi, 8
jne 0xd869f0
mov eax, dword [0xfcd99644]
test eax, eax
je 0xd86ad2
mov ecx, dword [esp + 4]
xor edx, edx
mov esi, dword [0xfcd99648]
cmp dword [esi + edx*8], 0x16194952
je 0xd86aa8
inc edx
cmp eax, edx
jne 0xd86a50
jmp 0xd86ad2
push 0xbbf966b4
push dword [0xfcd99638]
call fcn.00d8bcb0
add esp, 8
test eax, eax
je 0xd86adf
mov ecx, dword [edi]
test ecx, ecx
je 0xd86356
mov dword [esp + 4], 0
lea edx, [esp + 4]
push edx
push ecx
call eax
test eax, eax
je 0xd86aeb
cmp dword [esp + 4], 0
je 0xd86aeb
mov dword [edi + 4], 3
jmp 0xd86356
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0xd86ad2
lea ecx, [esp + 0x44]
lea edx, [esp + 0x14]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 4
push eax
push dword [0xfcd9964c]
call fcn.00d88a80
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [edi + 4], 1
jmp 0xd86356
lea eax, [esp + 0x50]
push eax
call fcn.00d8c460
add esp, 4
test al, al
je 0xd86356
mov eax, dword [esp + 0x50]
mov ecx, 2
cmp eax, 3
je 0xd86b10
mov ecx, eax
mov dword [edi + 4], ecx
jmp 0xd86356