Function at 0x1000d700
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x24]
sub esp, 0x108
xor ecx, ecx
mov dword [edx], ecx
push ebx
push ebp
lea ebp, [eax + 0x18]
mov al, byte [eax]
push esi
push edi
test al, 2
jne 0x1000d730
pop edi
pop esi
pop ebp
mov ax, 0x3c
pop ebx
add esp, 0x108
ret 0x24
mov ebx, dword [esp + 0x130]
cmp ebx, 0x50
ja case.0x1000d9fe.136
mov edx, dword [esp + 0x138]
cmp edx, 0x50
ja case.0x1000d9fe.136
cmp ebx, ecx
lea esi, [esp + 0x18]
je 0x1000d75f
mov esi, dword [esp + 0x12c]
test al, 4
mov word [ebp + 0x30], 0x18
je 0x1000daf9
mov eax, dword [esp + 0x120]
mov word [ebp + 0x38], cx
and al, 0
mov word [ebp + 0x3a], cx
add eax, 0xc8000f
cmp ebx, 0xc
mov dword [ebp + 0x34], eax
jbe 0x1000d7d6
mov ecx, esi
lea eax, [ebp + 0x40]
mov dword [esp + 0x10], eax
cmp ebx, 0x4c
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 8]
mov dword [eax + 8], ecx
ja case.0x1000d9fe.136
lea ecx, [ebx - 0xc]
lea edi, [ebp + 0x50]
mov edx, ecx
add esi, 0xc
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, 0x38
mov ecx, edx
sub eax, ebx
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
jle 0x1000d7f8
push eax
lea eax, [ebx + ebp + 0x44]
jmp 0x1000d7f2
mov ecx, ebx
lea edi, [ebp + 0x40]
mov edx, ecx
mov dword [esp + 0x10], edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [ebp + 0x50]
and ecx, 3
push 0x2c
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.1001b970
mov byte [ebp + 0x4c], bl
mov ebx, dword [esp + 0x124]
lea esi, [ebp + 0x4e]
push 2
push esi
mov byte [ebp + 0x4d], bl
call fcn.1001b970
mov cl, byte [esi]
mov dl, byte [ebp + 0x4f]
mov al, byte [esp + 0x120]
push 0x100648d0
mov byte [ebp + 0x7d], al
lea eax, [esp + 0x6c]
shr ebx, 8
not cl
not dl
push eax
mov byte [ebp + 0x7c], bl
mov byte [ebp + 0x7e], cl
mov byte [ebp + 0x7f], dl
call fcn.1001b9a0
mov ecx, dword [esp + 0x124]
add ecx, 8
mov edx, dword [ecx]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 4]
mov dword [esp + 0x24], eax
mov edx, dword [ecx + 8]
mov dword [esp + 0x28], edx
lea edx, [esp + 0x70]
mov eax, dword [ecx + 0xc]
lea ecx, [esp + 0x20]
push ecx
push edx
mov dword [esp + 0x34], eax
call fcn.1001ba90
lea eax, [esp + 0x28]
lea ecx, [esp + 0x78]
push eax
push ecx
call fcn.1001b9a0
lea ebx, [ebp + 0x70]
lea edx, [esp + 0x80]
push ebx
push edx
call fcn.1001bcc0
mov ecx, 0xffffff90
add esp, 0x20
mov eax, ebx
sub ecx, ebp
mov dl, byte [eax - 0x10]
xor byte [eax], dl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x10
jb 0x1000d89e
lea esi, [ebp + 0x60]
lea eax, [esp + 0x68]
push esi
push eax
call fcn.1001bcc0
mov eax, esi
mov esi, 0xffffffa0
add esp, 8
sub esi, ebp
mov dword [esp + 0x14], esi
mov cl, byte [eax - 0x10]
mov dl, byte [eax]
xor dl, cl
mov byte [eax], dl
inc eax
lea edx, [esi + eax]
cmp edx, 0x10
jb 0x1000d8ca
lea esi, [ebp + 0x50]
lea eax, [esp + 0x68]
push esi
push eax
call fcn.1001bcc0
mov eax, esi
mov esi, 0xffffffb0
add esp, 8
sub esi, ebp
mov cl, byte [eax - 0x10]
mov dl, byte [eax]
xor dl, cl
mov byte [eax], dl
inc eax
lea edx, [esi + eax]
cmp edx, 0x10
jb 0x1000d8f6
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x68]
push eax
push ecx
call fcn.1001bcc0
add esp, 8
mov eax, 0x40
mov word [ebp + 0x3c], ax
mov word [ebp + 0x3e], ax
push ebp
call fcn.10018f40
push eax
call fcn.1000bb50
mov edi, eax
test di, di
jne 0x1000dacf
mov edi, dword [esp + 0x10]
lea edx, [esp + 0x68]
push edi
push edx
call fcn.1001bcc0
mov ecx, 0xffffffc0
add esp, 8
mov eax, edi
sub ecx, ebp
mov dl, byte [eax + 0x10]
xor byte [eax], dl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x10
jb 0x1000d959
lea edi, [ebp + 0x50]
lea eax, [esp + 0x68]
push edi
push eax
call fcn.1001bcc0
add esp, 8
mov eax, edi
mov cl, byte [eax + 0x10]
mov dl, byte [eax]
xor dl, cl
mov byte [eax], dl
inc eax
lea edx, [eax + esi]
cmp edx, 0x10
jb 0x1000d97a
lea esi, [ebp + 0x60]
lea eax, [esp + 0x68]
push esi
push eax
call fcn.1001bcc0
add esp, 8
mov eax, esi
mov cl, byte [eax + 0x10]
mov dl, byte [eax]
xor dl, cl
mov byte [eax], dl
mov edx, dword [esp + 0x14]
inc eax
lea ecx, [eax + edx]
cmp ecx, 0x10
jb 0x1000d99f
lea edx, [esp + 0x68]
push ebx
push edx
call fcn.1001bcc0
lea eax, [esp + 0x70]
push ebp
push eax
call fcn.1001b9a0
mov al, byte [ebp + 0x7d]
add esp, 0x10
cmp al, 0x53
je 0x1000d9e6
pop edi
pop esi
pop ebp
mov ax, 2
pop ebx
add esp, 0x108
ret 0x24
mov al, byte [ebp + 0x7c]
test al, 0x80
je 0x1000da7c
and eax, 0x9f
add eax, 0xffffff80
cmp eax, 8
ja case.default.0x1000d9fe
jmp dword [eax*4 + 0x1000dbb4]
pop edi
pop esi
pop ebp
mov ax, 0x41
pop ebx
add esp, 0x108
ret 0x24
pop edi
pop esi
pop ebp
mov ax, 4
pop ebx
add esp, 0x108
ret 0x24
pop edi
pop esi
pop ebp
mov ax, 0xa
pop ebx
add esp, 0x108
ret 0x24
pop edi
pop esi
pop ebp
mov ax, 0x15
pop ebx
add esp, 0x108
ret 0x24
pop edi
pop esi
pop ebp
mov ax, 0x4a
pop ebx
add esp, 0x108
ret 0x24
pop edi
pop esi
pop ebp
mov ax, 0x3f
pop ebx
add esp, 0x108
ret 0x24
pop edi
pop esi
pop ebp
mov ax, 0xff
pop ebx
add esp, 0x108
ret 0x24
cmp al, 0x3c
ja case.0x1000d9fe.132
mov ecx, dword [esp + 0x138]
and eax, 0xff
cmp eax, ecx
ja case.0x1000d9fe.132
mov ecx, dword [esp + 0x13c]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x134]
mov dword [ecx], eax
xor ecx, ecx
mov cl, byte [ebp + 0x7c]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
xor ax, ax
pop ebx
add esp, 0x108
ret 0x24
lea eax, [esp + 0x68]
push ebp
push eax
call fcn.1001b9a0
add esp, 8
cmp di, 0xc
je 0x1000db5a
cmp di, 9
je 0x1000db5a
mov ax, di
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret 0x24
mov ecx, dword [esp + 0x120]
mov ax, word [esp + 0x124]
mov dword [ebp + 0x34], ecx
mov cx, word [esp + 0x128]
mov word [ebp + 0x3a], cx
mov ecx, ebx
mov word [ebp + 0x38], ax
mov eax, ecx
lea edi, [ebp + 0x40]
push ebp
shr ecx, 2
mov dword [esp + 0x14], edi
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov word [ebp + 0x3c], bx
mov word [ebp + 0x3e], dx
call fcn.10018f40
push eax
call fcn.1000bb50
mov ecx, eax
and ecx, 0xffff
je 0x1000db6b
cmp ecx, 9
je 0x1000db5a
cmp ecx, 0xc
jne 0x1000dba5
pop edi
pop esi
pop ebp
mov ax, 3
pop ebx
add esp, 0x108
ret 0x24
mov edx, dword [esp + 0x13c]
mov ecx, dword [esp + 0x138]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x134]
mov dword [edx], ecx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret 0x24
mov ax, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret 0x24