Function at 0x10008217
Capabilities:
Encode data using xor

Disassembly:
push esi
mov esi, ecx
call fcn.100081b8
movzx eax, al
dec eax
cmp eax, 0x11
ja case.0x100081f0.3
jmp dword [eax*4 + 0x10008337]
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x24]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.1001537b
pop esi
ret
mov ecx, esi
pop esi
jmp 0x1000837f
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x3c]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.1001b552
pop esi
ret
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x40]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.1001e774
pop esi
ret
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x50]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.1002672a
pop esi
ret
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x44]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.1002160b
pop esi
ret
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x48]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.10022d2a
pop esi
ret
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x4c]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.100250aa
pop esi
ret
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x58]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.1002b930
pop esi
ret
mov eax, dword [0x10099bc8]
test eax, eax
je case.0x100081f0.3
mov ecx, dword [eax + 0x38]
test ecx, ecx
je case.0x100081f0.3
push esi
call fcn.10017bf9
pop esi
ret
mov ecx, esi
pop esi
jmp 0x10008650
mov ecx, esi
pop esi
jmp 0x100086eb
mov ecx, esi
pop esi
jmp 0x10008820
mov ecx, esi
pop esi
jmp 0x10008888
cmp dword [0x10099bc0], 0
je case.0x100081f0.3
push esi
call fcn.1000fb04
pop esi
ret
push 0xa4
mov eax, 0x100727cd
call fcn.1003bf6c
mov esi, ecx
call fcn.100081b8
mov ecx, esi
mov bl, al
call fcn.1000802e
mov ecx, esi
mov edi, eax
call fcn.1000802e
mov esi, eax
cmp bl, 1
je 0x100083c1
cmp bl, 2
je 0x100083c1
mov edx, dword [0x10099bc8]
mov ecx, dword [0x10099bc0]
jmp 0x100083eb
mov edx, dword [0x10099bc8]
test edx, edx
je 0x100083de
mov ecx, dword [edx + 0x58]
test ecx, ecx
je 0x100083de
push esi
call fcn.1002d681
mov edx, dword [0x10099bc8]
mov ecx, dword [0x10099bc0]
test ecx, ecx
je 0x100083eb
mov dword [ecx + 0x4c], esi
cmp bl, 3
je 0x100083f5
cmp bl, 4
jne 0x10008415
test edx, edx
je 0x1000840e
cmp dword [edx + 0x58], 0
je 0x1000840e
mov ecx, dword [edx + 0x58]
push esi
call fcn.1002d6e0
mov ecx, dword [0x10099bc0]
test ecx, ecx
je 0x10008415
mov dword [ecx + 0x50], esi
movzx eax, bl
sub eax, 1
je 0x100085c1
sub eax, 1
je 0x10008557
sub eax, 1
je 0x100084d6
sub eax, 1
jne 0x1000864a
movaps xmm0, xmmword [0x1008aac0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 0x1a782c3e
mov edx, ebx
mov dword [ebp - 0x34], 0x36393439
mov dword [ebp - 0x30], 0x763d3b
mov cl, byte [ebp - 0x48]
xor byte [ebp + edx - 0x47], cl
inc edx
cmp edx, 0x1a
jb 0x10008461
sub esp, 0x18
mov byte [ebp - 0x2d], bl
lea eax, [ebp - 0x47]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0xb0]
push eax
call fcn.10003c43
add esp, 0x20
mov dword [ebp - 4], 6
cmp dword [eax + 0x14], 0x10
jb 0x1000849d
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x98]
call fcn.10004179
mov edx, 0xffff3b3b
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x98]
call fcn.100086be
push ebx
push 1
lea ecx, [ebp - 0x98]
call fcn.1000402e
lea ecx, [ebp - 0xb0]
jmp 0x10008642
movaps xmm0, xmmword [0x1008a670]
xor ebx, ebx
movups xmmword [ebp - 0x68], xmm0
mov edx, ebx
movaps xmm0, xmmword [0x1008a2e0]
push edi
movups xmmword [ebp - 0x58], xmm0
mov cl, byte [ebp - 0x68]
xor byte [ebp + edx - 0x67], cl
inc edx
cmp edx, 0x1e
jb 0x100084f1
sub esp, 0x18
mov byte [ebp - 0x49], bl
lea eax, [ebp - 0x67]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x80]
push eax
call fcn.10003c43
add esp, 0x20
mov dword [ebp - 4], 4
cmp dword [eax + 0x14], 0x10
jb 0x1000852a
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x28]
call fcn.10004179
mov edx, 0xff6565ff
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x28]
call fcn.100086be
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
lea ecx, [ebp - 0x80]
jmp 0x10008642
movaps xmm0, xmmword [0x1008aae0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x24], xmm0
mov dword [ebp - 0x14], 0x706b795b
mov edx, ebx
mov word [ebp - 0x10], 0x36
mov cl, byte [ebp - 0x24]
xor byte [ebp + edx - 0x23], cl
inc edx
cmp edx, 0x14
jb 0x10008574
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x23]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x60]
push eax
call fcn.10003c43
add esp, 0x20
mov dword [ebp - 4], 2
cmp dword [eax + 0x14], 0x10
jb 0x100085ad
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x80]
call fcn.10004179
mov byte [ebp - 4], 3
mov edx, 0xffff3b3b
jmp 0x1000862c
movaps xmm0, xmmword [0x1008a8d0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], 0x6d39252a
mov edx, ebx
mov dword [ebp - 0x14], 0x253e2c0e
mov word [ebp - 0x10], 0x63
mov cl, byte [ebp - 0x28]
xor byte [ebp + edx - 0x27], cl
inc edx
cmp edx, 0x18
jb 0x100085e5
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x27]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x60]
push eax
call fcn.10003c43
add esp, 0x20
mov dword [ebp - 4], ebx
cmp dword [eax + 0x14], 0x10
jb 0x1000861a
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x80]
call fcn.10004179
mov byte [ebp - 4], 1
mov edx, 0xff6565ff
lea ecx, [ebp - 0x80]
call fcn.100086be
push ebx
push 1
lea ecx, [ebp - 0x80]
call fcn.1000402e
lea ecx, [ebp - 0x60]
push ebx
push 1
call fcn.1000402e
call fcn.1003bf35
ret
push 0x34
mov eax, 0x100727fb
call fcn.1003bfa0
xor ebx, ebx
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], ebx
mov byte [ebp - 0x28], bl
lea eax, [ebp - 0x28]
mov dword [ebp - 4], ebx
push eax
call fcn.100080df
mov ecx, eax
call fcn.1000802e
cmp dword [ebp - 0x14], 0x10
lea ecx, [ebp - 0x28]
mov esi, eax
cmovae ecx, dword [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x40]
call fcn.10004179
mov edx, esi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x40]
call fcn.100086be
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
call fcn.1003bf4a
ret
push 0x64
mov eax, 0x10072840
call fcn.1003bfa0
push 0xf
xor ebx, ebx
pop eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], ebx
mov byte [ebp - 0x40], bl
mov dword [ebp - 4], ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], ebx
mov byte [ebp - 0x28], bl
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.100080df
mov ecx, eax
call fcn.100080df
cmp dword [ebp - 0x30], ebx
je 0x10008737
cmp dword [ebp - 0x30], 0xff
ja 0x100087a1
cmp dword [ebp - 0x18], 0
je 0x10008743
cmp dword [ebp - 0x18], 0x1e
ja 0x100087a1
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x70]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.10004179
mov byte [ebp - 4], 2
lea eax, [ebp - 0x40]
cmp dword [ebp - 0x2c], 0x10
lea ecx, [ebp - 0x58]
cmovae eax, dword [ebp - 0x40]
push eax
call fcn.10004179
push ebx
push ecx
mov byte [ebp - 4], 3
lea eax, [ebp - 0x70]
and dword [esp], 0
push ebx
push ebx
push ebx
push eax
lea eax, [ebp - 0x58]
push eax
push eax
call dword [0x10088fc4]
push ebx
push 1
lea ecx, [ebp - 0x58]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x70]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.1000402e
call fcn.1003bf4a
ret
push 0x1c
mov eax, 0x1007286d
call fcn.1003bfa0
mov ebx, ecx
xor eax, eax
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x28], al
mov dword [ebp - 4], eax
lea eax, [ebp - 0x28]
push eax
call fcn.100080df
cmp dword [ebp - 0x18], 0
je 0x10008876
mov ecx, ebx
call fcn.1000802e
mov ecx, ebx
mov edi, eax
call fcn.1000802e
mov ecx, ebx
mov esi, eax
call fcn.1000802e
push eax
push esi
mov edx, edi
lea ecx, [ebp - 0x28]
call fcn.100087bd
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
call fcn.1003bf4a
ret
push 0x34
mov eax, 0x100728ce
call fcn.1003bfa0
mov esi, ecx
mov dword [ebp - 0x18], 0xf
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x1c], eax
mov byte [ebp - 0x2c], al
call fcn.100081b8
mov ecx, esi
mov bl, al
call fcn.1000802e
movzx ecx, bl
mov edi, eax
sub ecx, 1
je 0x10008a49
sub ecx, 1
je 0x10008a33
sub ecx, 1
je 0x1000892b
sub ecx, 1
jne 0x10008b5a
mov edx, edi
call fcn.100078c8
test eax, eax
je 0x10008b5a
mov ecx, eax
call fcn.10008053
mov edx, edi
mov ecx, 0x1009dfe8
call fcn.1000785a
mov ecx, edi
call fcn.10009552
mov esi, eax
test esi, esi
je 0x10008b5a
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10008b5a
mov ecx, esi
call fcn.1000fc33
jmp 0x10008b5a
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.100080df
mov esi, eax
mov ecx, esi
call fcn.100081b8
mov bl, al
mov ecx, esi
mov byte [ebp - 0x38], bl
call fcn.100081b8
mov bh, al
mov ecx, esi
mov byte [ebp - 0x34], bh
call fcn.100081b8
mov edx, edi
mov byte [ebp - 0x30], al
call fcn.100078c8
cmp dword [ebp - 0x1c], 0
mov esi, eax
je 0x10008b5a
test esi, esi
jne 0x10008a0f
push 0x1c
call fcn.1003b3a6
mov esi, eax
pop ecx
mov dword [ebp - 0x3c], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 3
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ba2
mov ecx, esi
call fcn.10008071
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.1003b3a6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 4
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ba2
mov ecx, esi
call fcn.10008071
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.1000791e
test al, al
jne 0x100088fd
test ebx, ebx
je 0x100088fd
push 0
push 1
mov ecx, ebx
call fcn.1000402e
push 0x1c
push ebx
call fcn.1003b3fc
pop ecx
pop ecx
jmp 0x100088fd
lea eax, [ebp - 0x2c]
cmp esi, eax
je 0x10008a22
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10003dff
mov al, byte [ebp - 0x30]
mov byte [esi + 0x18], bl
mov byte [esi + 0x19], bh
mov byte [esi + 0x1a], al
jmp 0x100088fd
mov edx, edi
call fcn.100078c8
test eax, eax
je 0x10008b5a
mov ecx, eax
jmp 0x10008b49
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.100080df
mov esi, eax
mov ecx, esi
call fcn.100081b8
mov bl, al
mov ecx, esi
mov byte [ebp - 0x38], bl
call fcn.100081b8
mov bh, al
mov ecx, esi
mov byte [ebp - 0x34], bh
call fcn.100081b8
mov edx, edi
mov byte [ebp - 0x30], al
call fcn.100078c8
cmp dword [ebp - 0x1c], 0
mov esi, eax
je 0x10008b43
test esi, esi
jne 0x10008b22
push 0x1c
call fcn.1003b3a6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 1
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ba2
mov ecx, esi
call fcn.10008071
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.1003b3a6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 2
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ba2
mov ecx, esi
call fcn.10008071
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.1000791e
test al, al
jne 0x10008b5a
test ebx, ebx
je 0x10008b5a
push 0
push 1
mov ecx, ebx
call fcn.1000402e
push 0x1c
push ebx
call fcn.1003b3fc
pop ecx
pop ecx
jmp 0x10008b5a
lea eax, [ebp - 0x2c]
cmp esi, eax
je 0x10008b35
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10003dff
mov al, byte [ebp - 0x30]
mov byte [esi + 0x18], bl
mov byte [esi + 0x19], bh
mov byte [esi + 0x1a], al
jmp 0x10008b5a
test esi, esi
je 0x10008b5a
mov ecx, esi
call fcn.10008053
mov edx, edi
mov ecx, 0x1009dfe8
call fcn.1000785a
push 0
push 1
lea ecx, [ebp - 0x2c]
call fcn.1000402e
call fcn.1003bf4a
ret