Function at 0x10001e10
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
add edx, 0xffffcd36
push ebx
mov ebx, dword [esp + 0x28]
add eax, 0xfffffaa5
push ebp
push esi
mov esi, dword [esp + 0x24]
add ebx, 0xffffcbaf
push edi
mov edi, dword [esp + 0x24]
add esi, 0xfffffe16
add edi, 0x348
mov dword [esp + 0x10], ebx
cmp edx, eax
jg 0x100021b9
mov ecx, dword [esp + 0x18]
lea eax, [esi - 0x37b]
add ecx, 0xffffce50
cmp ecx, eax
je 0x10002147
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x78]
mov edx, dword [ecx + 0x48]
sub edx, dword [eax + 0x34]
mov dword [ecx + 0x118], edx
mov edx, dword [ecx + 0x38]
mov eax, dword [ecx + 0xc]
sub eax, 0x355c
xor dword [edx + 0x60], eax
mov eax, dword [ecx + 0x38]
mov edx, dword [ecx + 0x2c]
imul eax, dword [eax + 0x1b4], 0x3451
mov dword [ecx + 0x7c], eax
mov eax, dword [ecx + 0x70]
sub eax, 0x31ce
or dword [edx + 0xa4], eax
cmp dword [ecx + 0x118], 0
je 0x10002129
mov esi, dword [ecx + 0x2c]
xor ebp, ebp
mov edi, dword [ecx + 0x108]
imul eax, esi, 0x3372
mov dword [ecx + 0xc], 0x670c
mov dword [ecx + 0x1b8], eax
mov eax, dword [ecx + 0x78]
mov edx, dword [esi + 0x1e8]
add eax, 0xfffe80e8
lea ebx, [eax + edx*8]
mov eax, dword [ecx + 0x48]
add eax, dword [ebx]
imul edx, dword [esi + 0x84], 0x4ebfbe0f
mov dword [esp + 0x24], eax
imul eax, dword [edi + 0x1e8], 0xb366f8a5
mov dword [esp + 0x28], ebx
cmp edx, eax
je 0x10001f35
mov esi, dword [ecx + 0x98]
or esi, 0x2ff7
nop dword [eax]
mov dword [ecx + 0xe0], esi
inc edx
imul eax, dword [edi + 0x1e8], 0xb366f8a5
cmp edx, eax
jne 0x10001f20
mov esi, dword [ecx + 0x38]
mov edx, 0x310f
imul eax, dword [esi + 0x84], 0x4a0eb050
cmp eax, edx
jb 0x10001f69
mov edi, dword [ecx + 0x68]
add edi, 0xffffcdcd
mov dword [ecx + 0x1a4], edi
inc edx
imul eax, dword [esi + 0x84], 0x4a0eb050
cmp edx, eax
jbe 0x10001f54
cmp dword [ebx + 4], ebp
jbe 0x100020ea
mov eax, dword [ecx + 0x178]
mov edi, dword [esp + 0x24]
mov dword [ecx + 0x44], 0xa5db207
lea ebx, [edi + ebp]
mov dword [esp + 0x40], ebx
mov eax, dword [eax + 0x84]
add eax, 0xffffd26b
add ebp, eax
mov eax, dword [ecx + 0x38]
add edi, ebp
mov dword [esp + 0x34], edi
mov edx, dword [eax + 0x1e8]
mov eax, dword [ebx + 4]
xor edx, 0x2fff
sub eax, edx
mov edx, dword [ecx + 0x10c]
mov esi, dword [edx + 0x1e8]
xor edx, edx
xor esi, 0x2ff5
div esi
xor esi, esi
mov ebx, eax
test ebx, ebx
je 0x10002092
mov edx, dword [esp + 0x40]
nop word [eax + eax]
mov eax, dword [ecx + 0x178]
mov eax, dword [eax + 0x1c4]
add dword [ecx + 0xe8], 0x3fbf
xor eax, 0x31b3
add ebp, eax
movzx eax, word [edi + esi*2]
mov edi, eax
shr eax, 0xc
and edi, 0xfff
dec eax
add edi, dword [edx]
cmp eax, 9
ja case.0x1000201b.4
movzx eax, byte [eax + 0x1000222c]
jmp dword [eax*4 + 0x1000221c]
mov eax, dword [ecx + 0x118]
jmp 0x10002064
movzx eax, word [ecx + 0x11a]
jmp 0x10002064
mov eax, dword [ecx + 0xe8]
mov edx, dword [ecx + 0xc]
or eax, 0x355c
imul eax, dword [ecx + 0xe8]
sub edx, 0x2d89
mov dword [ecx + 0xe8], eax
mov eax, dword [ecx + 0x2c]
mov dword [eax + 0x94], edx
movzx eax, word [ecx + 0x118]
mov edx, dword [ecx + 0x48]
add dword [edx + edi], eax
mov edx, dword [esp + 0x40]
mov eax, dword [ecx + 0x140]
inc esi
xor eax, dword [ecx + 0x164]
mov edi, dword [esp + 0x34]
xor eax, 0x355c
mov dword [ecx + 0x164], eax
cmp esi, ebx
jb 0x10001fe0
mov edx, dword [ecx + 0x178]
mov esi, 0x2d89
mov eax, dword [edx + 0x1c]
sub dword [ecx + 0x128], eax
inc dword [edx + 0x1c]
mov edi, dword [ecx + 0x108]
mov eax, dword [edi + 0x1c4]
xor eax, 0x1c3b
cmp eax, esi
jbe 0x100020dd
imul ebx, dword [ecx + 0x70], 0x32ca
mov edx, dword [ecx + 0x4c]
or edx, ebx
inc esi
mov dword [ecx + 0x4c], edx
mov eax, dword [edi + 0x1c4]
xor eax, 0x1c3b
cmp esi, eax
jb 0x100020c8
mov eax, dword [esp + 0x28]
cmp ebp, dword [eax + 4]
jb 0x10001f72
mov eax, dword [ecx + 0x38]
mov esi, 0x3524
mov eax, dword [eax + 0x1c4]
add eax, 0x375
cmp eax, esi
jbe 0x10002129
mov edx, dword [ecx + 0x2c]
inc esi
mov eax, dword [edx + 0x160]
sub dword [ecx + 0x190], eax
dec dword [edx + 0x160]
mov eax, dword [ecx + 0x38]
mov eax, dword [eax + 0x1c4]
add eax, 0x375
cmp esi, eax
jb 0x10002101
mov eax, dword [ecx + 0x178]
add ecx, 0x98
pop edi
pop esi
pop ebp
add dword [eax + 0x50], ecx
mov eax, dword [esp + 4]
add eax, 0x31b0
pop ebx
pop ecx
ret
xor esi, ebx
mov ebp, edx
mov ebx, dword [esp + 0x20]
imul esi, dword [ebx + 0x10c]
mov dword [esp + 0x40], esi
cmp edx, esi
jb 0x1000220a
mov esi, dword [ebx + 0x174]
mov eax, dword [esp + 0x40]
imul esi, edi
nop
mov ecx, edx
cmp edx, esi
jbe 0x100021a3
mov edi, dword [esp + 0x1c]
mov eax, dword [ebx + 0x164]
add edi, 0xfffffc85
add edi, dword [ebx + 0x108]
nop dword [eax]
add ecx, 4
xor eax, edi
cmp ecx, esi
ja 0x10002190
mov dword [ebx + 0x164], eax
mov eax, dword [esp + 0x40]
add ebp, 4
cmp ebp, eax
jae 0x10002170
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
add eax, 0x31b0
pop ebx
pop ecx
ret
mov esi, dword [esp + 0x30]
mov ecx, edx
and ecx, edi
add esi, 0x86
add esi, ecx
cmp edx, esi
je 0x1000220a
mov ecx, dword [esp + 0x20]
mov ebx, dword [ecx + 0x74]
mov edi, dword [ecx + 0x120]
add ebx, 0xfffffbed
cmp edi, ebx
jb 0x10002203
mov eax, dword [ecx + 0xe8]
sub eax, dword [ecx + 0x134]
cmp dword [ecx + 0xd8], eax
jae 0x10002203
mov eax, dword [ecx + 0x7c]
and eax, 0x3372
sub dword [ecx + 0x40], eax
add edx, 4
cmp edx, esi
jne 0x100021e0
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
add eax, 0x31b0
pop ebx
pop ecx
ret