Function at 0x1000d810
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword fs:[0]
mov cl, byte [0x1018c2a0]
push 0xffffffffffffffff
push 0x101557ae
push eax
mov al, byte [0x10191429]
mov dword fs:[0], esp
sub esp, 0xe4
dec cl
test al, 1
mov byte [0x1018c2a0], cl
jne 0x1000db7d
push ebx
mov cl, al
mov al, byte [0x10194ca8]
push ebp
or cl, 1
mov ebp, 0x1d
xor ebx, ebx
push esi
test al, 1
push edi
mov byte [0x10191429], cl
mov word [esp + 0x14], bp
mov word [esp + 0x16], 0x4b
mov word [esp + 0x18], bx
mov word [esp + 0x1a], 3
mov word [esp + 0x1c], bp
mov word [esp + 0x1e], 0xc
jne 0x1000d8f5
or al, 1
push 0xe
mov byte [0x10194ca8], al
call fcn.1013c2df
add esp, 4
mov dword [0x10194cac], eax
mov edi, 0x30
xor esi, esi
mov bp, word [esp + esi + 0x14]
push edi
mov eax, ebp
mov ecx, 0x10194cac
and eax, 0xffff
push eax
call fcn.1004a650
mov ecx, dword [0x10194cac]
xor eax, ebp
xor eax, edi
xor edi, edi
mov word [esi + ecx], ax
mov eax, dword [0x10194cac]
mov di, word [esi + eax]
add esi, 2
cmp esi, 0xc
jb 0x1000d8a6
push 0x1000dbc0
mov word [eax + 0xc], bx
call fcn.1013c36b
add esp, 4
mov ebp, 0x1d
mov eax, 0xa
mov edx, 6
mov word [esp + 0x22], ax
mov word [esp + 0x24], ax
mov eax, 0x56
mov word [esp + 0x28], dx
mov word [esp + 0x2c], ax
mov word [esp + 0x38], ax
mov word [esp + 0x4a], ax
mov word [esp + 0x58], ax
mov eax, 0x5c
mov word [esp + 0x36], dx
mov word [esp + 0x60], ax
mov word [esp + 0x62], ax
mov al, byte [0x10194cb0]
mov edi, 2
mov ecx, 0x57
mov esi, 0x51
mov edx, 0x4c
mov word [esp + 0x20], di
test al, 1
mov word [esp + 0x26], cx
mov word [esp + 0x2a], si
mov word [esp + 0x2e], 1
mov word [esp + 0x30], 0x48
mov word [esp + 0x32], 0x14
mov word [esp + 0x34], 8
mov word [esp + 0x3a], dx
mov word [esp + 0x3c], 0x19
mov word [esp + 0x3e], 5
mov word [esp + 0x40], 0x52
mov word [esp + 0x42], 0x55
mov word [esp + 0x44], 0x1b
mov word [esp + 0x46], dx
mov word [esp + 0x48], 7
mov word [esp + 0x4c], bx
mov word [esp + 0x4e], bp
mov word [esp + 0x50], 0x1c
mov word [esp + 0x52], bx
mov word [esp + 0x54], di
mov word [esp + 0x56], cx
mov word [esp + 0x5a], cx
mov word [esp + 0x5c], si
mov word [esp + 0x5e], 0xd
mov word [esp + 0x64], 0x5b
mov word [esp + 0x66], bx
jne 0x1000da5c
or al, 1
push 0x4a
mov byte [0x10194cb0], al
call fcn.1013c2df
add esp, 4
mov dword [0x10194cb4], eax
mov edi, 0x30
xor esi, esi
mov bp, word [esp + esi + 0x20]
push edi
mov edx, ebp
mov ecx, 0x10194cb4
and edx, 0xffff
push edx
call fcn.1004a650
mov ecx, dword [0x10194cb4]
xor eax, ebp
xor eax, edi
xor edi, edi
mov word [esi + ecx], ax
mov eax, dword [0x10194cb4]
mov di, word [esi + eax]
add esi, 2
cmp esi, 0x48
jb 0x1000da11
push 0x1000dbb0
mov word [eax + 0x48], bx
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10194cb4]
mov dl, byte [esp + 0x13]
push esi
mov byte [esp + 0x6c], dl
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x68]
push eax
push esi
call fcn.1000bf40
mov eax, dword [0x10194cac]
lea ecx, [esp + 0x68]
push eax
lea edx, [esp + 0x7c]
push ecx
push edx
mov dword [esp + 0x108], ebx
call fcn.1000cf10
add esp, 0xc
mov esi, eax
lea ecx, [esp + 0x98]
mov byte [esp + 0xfc], 1
call fcn.1002d3f0
push 1
lea ecx, [esp + 0x8c]
push esi
push ecx
mov ecx, eax
mov byte [esp + 0x108], 2
call fcn.1002dbb0
push eax
push 0x101913f0
call fcn.1002fc20
add esp, 0xc
lea ecx, [esp + 0x98]
mov byte [esp + 0xfc], 1
call fcn.1002daa0
mov eax, dword [esp + 0x7c]
mov byte [esp + 0xfc], bl
cmp eax, ebx
je 0x1000db29
mov cl, byte [eax - 1]
cmp cl, bl
je 0x1000db1d
cmp cl, 0xff
je 0x1000db1d
dec cl
mov byte [eax - 1], cl
jmp 0x1000db29
add eax, 0xfffffffe
push eax
call fcn.101307a0
add esp, 4
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
cmp ecx, ebx
mov dword [esp + 0xfc], 0xffffffff
je 0x1000db6c
mov al, byte [ecx - 1]
cmp al, bl
je 0x1000db60
cmp al, 0xff
je 0x1000db60
dec al
mov byte [ecx - 1], al
jmp 0x1000db6c
add ecx, 0xfffffffe
push ecx
call fcn.101307a0
add esp, 4
push 0x1000dbd0
call fcn.1013c36b
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
mov al, byte [0x1018c2a0]
mov ecx, dword [esp + 0xe4]
mov dl, 0x4b
mov dword fs:[0], ecx
sub dl, al
mov eax, 0x101913f0
mov byte [0x1018c2a0], dl
add esp, 0xf0
ret