Function at 0x1000697d
Capabilities:
Encode data using xor

Disassembly:
push esi
mov esi, ecx
call fcn.1000678f
movzx eax, al
cmp eax, 0x13
ja case.0x10006976.2
jmp dword [eax*4 + 0x10006ada]
mov ecx, esi
pop esi
jmp 0x10006b2a
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0x3c]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.10020557
pop esi
ret
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0x70]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.10028958
pop esi
ret
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0x74]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.1002bac8
pop esi
ret
mov ecx, esi
pop esi
jmp 0x1003489d
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0x78]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.1002eb43
pop esi
ret
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0x7c]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.10030454
pop esi
ret
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0x80]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.100328af
pop esi
ret
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0x94]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.1003bf2f
pop esi
ret
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0xa0]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.1003f5db
pop esi
ret
mov ecx, esi
pop esi
jmp 0x10006e0f
mov ecx, esi
pop esi
jmp 0x10006f1d
mov ecx, esi
pop esi
jmp 0x10006fef
mov ecx, esi
pop esi
jmp 0x10007057
cmp dword [0x1009e6f0], 0
je case.0x10006976.2
push esi
call fcn.1001580c
pop esi
ret
mov ecx, esi
pop esi
jmp fcn.10007203
mov eax, dword [0x1009e6ec]
test eax, eax
je case.0x10006976.2
mov ecx, dword [eax + 0x84]
test ecx, ecx
je case.0x10006976.2
push esi
call fcn.100337e1
pop esi
ret
push 0x9c
mov eax, 0x100760fd
call fcn.1004602b
mov esi, ecx
call fcn.1000678f
mov ecx, esi
mov bl, al
call fcn.100073bf
mov ecx, esi
mov edi, eax
call fcn.100073bf
mov edx, dword [0x1009e6ec]
mov esi, eax
test edx, edx
je 0x10006bd9
cmp bl, 1
je 0x10006b68
cmp bl, 2
jne 0x10006ba7
mov ecx, dword [edx + 0x94]
test ecx, ecx
je 0x10006b7e
push esi
call fcn.1003be6f
mov edx, dword [0x1009e6ec]
mov ecx, dword [edx + 0x58]
test ecx, ecx
je 0x10006b91
push esi
call fcn.1002398a
mov edx, dword [0x1009e6ec]
mov ecx, dword [0x1009e6f0]
test ecx, ecx
je 0x10006bad
push esi
call fcn.10015c85
mov edx, dword [0x1009e6ec]
mov ecx, dword [0x1009e6f0]
cmp bl, 3
je 0x10006bb7
cmp bl, 4
jne 0x10006bd9
mov eax, dword [edx + 0x94]
test eax, eax
je 0x10006bcf
push esi
mov ecx, eax
call fcn.1003becf
mov ecx, dword [0x1009e6f0]
test ecx, ecx
je 0x10006bd9
push esi
call fcn.10015ce1
movzx eax, bl
sub eax, 1
je 0x10006d80
sub eax, 1
je 0x10006d16
sub eax, 1
je 0x10006c8f
sub eax, 1
jne 0x10006e09
movaps xmm0, xmmword [0x1008f0d0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x60], xmm0
mov dword [ebp - 0x50], 0x18535558
mov ecx, ebx
mov byte [ebp - 0x4c], bl
mov al, byte [ebp - 0x60]
xor byte [ebp + ecx - 0x5f], al
inc ecx
cmp ecx, 0x13
jb 0x10006c1a
sub esp, 0x18
mov byte [ebp - 0x4c], bl
lea eax, [ebp - 0x5f]
mov ecx, esp
push eax
call fcn.10001f6a
lea eax, [ebp - 0xa8]
push eax
call fcn.10007414
add esp, 0x20
mov dword [ebp - 4], 6
cmp dword [eax + 0x14], 0x10
jb 0x10006c56
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x90]
call fcn.10001f6a
mov edx, 0xffff3b3b
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x90]
call fcn.10006e7d
push ebx
push 1
lea ecx, [ebp - 0x90]
call fcn.10001e1f
lea ecx, [ebp - 0xa8]
jmp 0x10006e01
movaps xmm0, xmmword [0x1008ef60]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 0xb060b28
mov ecx, ebx
mov dword [ebp - 0x34], 0x440f0904
mov byte [ebp - 0x30], bl
mov al, byte [ebp - 0x48]
xor byte [ebp + ecx - 0x47], al
inc ecx
cmp ecx, 0x17
jb 0x10006cb0
sub esp, 0x18
mov byte [ebp - 0x30], bl
lea eax, [ebp - 0x47]
mov ecx, esp
push eax
call fcn.10001f6a
lea eax, [ebp - 0x78]
push eax
call fcn.10007414
add esp, 0x20
mov dword [ebp - 4], 4
cmp dword [eax + 0x14], 0x10
jb 0x10006ce9
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x28]
call fcn.10001f6a
mov edx, 0xff6565ff
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x28]
call fcn.10006e7d
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10001e1f
lea ecx, [ebp - 0x78]
jmp 0x10006e01
movaps xmm0, xmmword [0x1008ef40]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x24], xmm0
mov dword [ebp - 0x14], 0x2190b29
mov ecx, ebx
mov word [ebp - 0x10], 0x44
mov al, byte [ebp - 0x24]
xor byte [ebp + ecx - 0x23], al
inc ecx
cmp ecx, 0x14
jb 0x10006d33
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x23]
mov ecx, esp
push eax
call fcn.10001f6a
lea eax, [ebp - 0x48]
push eax
call fcn.10007414
add esp, 0x20
mov dword [ebp - 4], 2
cmp dword [eax + 0x14], 0x10
jb 0x10006d6c
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x78]
call fcn.10001f6a
mov byte [ebp - 4], 3
mov edx, 0xffff3b3b
jmp 0x10006deb
movaps xmm0, xmmword [0x1008e980]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], 0x57031f10
mov ecx, ebx
mov dword [ebp - 0x14], 0x1f041634
mov word [ebp - 0x10], 0x59
mov al, byte [ebp - 0x28]
xor byte [ebp + ecx - 0x27], al
inc ecx
cmp ecx, 0x18
jb 0x10006da4
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x27]
mov ecx, esp
push eax
call fcn.10001f6a
lea eax, [ebp - 0x48]
push eax
call fcn.10007414
add esp, 0x20
mov dword [ebp - 4], ebx
cmp dword [eax + 0x14], 0x10
jb 0x10006dd9
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x78]
call fcn.10001f6a
mov byte [ebp - 4], 1
mov edx, 0xff6565ff
lea ecx, [ebp - 0x78]
call fcn.10006e7d
push ebx
push 1
lea ecx, [ebp - 0x78]
call fcn.10001e1f
lea ecx, [ebp - 0x48]
push ebx
push 1
call fcn.10001e1f
call fcn.10045ff4
ret
push 0x34
mov eax, 0x1007612b
call fcn.1004605f
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.100066dc
mov ecx, eax
call fcn.100073bf
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.10001f6a
mov edx, esi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x40]
call fcn.10006e7d
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.10001e1f
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10001e1f
call fcn.10046009
ret
push 0x64
mov eax, 0x10076170
call fcn.1004605f
mov esi, ecx
call fcn.1000678f
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]
mov ecx, esi
push eax
call fcn.100066dc
mov ecx, eax
call fcn.100066dc
cmp dword [ebp - 0x30], ebx
je 0x10006f72
cmp dword [ebp - 0x30], 0xff
ja 0x10006fd3
cmp dword [ebp - 0x18], 0
je 0x10006f7e
cmp dword [ebp - 0x18], 0x1e
ja 0x10006fd3
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x70]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.10001f6a
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.10001f6a
push ebx
push ebx
lea edx, [ebp - 0x70]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x58]
call fcn.10018621
pop ecx
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x58]
call fcn.10001e1f
push ebx
push 1
lea ecx, [ebp - 0x70]
call fcn.10001e1f
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10001e1f
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.10001e1f
call fcn.10046009
ret
push 0x1c
mov eax, 0x1007619d
call fcn.1004605f
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.100066dc
cmp dword [ebp - 0x18], 0
je 0x10007045
mov ecx, ebx
call fcn.100073bf
mov ecx, ebx
mov edi, eax
call fcn.100073bf
mov ecx, ebx
mov esi, eax
call fcn.100073bf
push eax
push esi
push edi
lea ecx, [ebp - 0x28]
call fcn.1001c871
add esp, 0xc
push 0
push 1
lea ecx, [ebp - 0x28]
call fcn.10001e1f
call fcn.10046009
ret
push 0x34
mov eax, 0x100761e4
call fcn.1004605f
mov esi, ecx
mov dword [ebp - 0x14], 0xf
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x28], al
call fcn.1000678f
mov ecx, esi
mov bl, al
call fcn.100066b6
movzx edi, ax
movzx eax, bl
sub eax, 1
je 0x100070b8
sub eax, 1
jne 0x100071f1
mov esi, edi
mov edx, edi
call fcn.10005ec4
test eax, eax
je 0x100071f1
mov ecx, eax
call fcn.1000662a
mov edx, esi
jmp 0x100071c6
lea eax, [ebp - 0x28]
mov ecx, esi
push eax
call fcn.100066dc
mov esi, eax
mov ecx, esi
call fcn.1000678f
mov ecx, esi
mov byte [ebp - 0x2c], al
call fcn.1000678f
mov ecx, esi
mov byte [ebp - 0x30], al
call fcn.1000678f
mov ebx, edi
mov byte [ebp - 0x34], al
mov edx, ebx
mov dword [ebp - 0x38], ebx
call fcn.10005ec4
cmp dword [ebp - 0x18], 0
mov esi, eax
je 0x100071b9
test esi, esi
jne 0x10007192
push 0x1c
call fcn.100454e6
mov esi, eax
pop ecx
mov dword [ebp - 0x3c], esi
push dword [ebp - 0x34]
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 1
push dword [ebp - 0x30]
push dword [ebp - 0x2c]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10004ca6
mov ecx, esi
call fcn.10006648
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.100454e6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x34]
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 2
push dword [ebp - 0x30]
push dword [ebp - 0x2c]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10004ca6
mov ecx, esi
call fcn.10006648
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.10005f1a
test al, al
jne 0x100071d0
test ebx, ebx
je 0x100071d0
push 0
push 1
mov ecx, ebx
call fcn.10001e1f
push 0x1c
push ebx
call fcn.10045519
pop ecx
pop ecx
jmp 0x100071d0
lea eax, [ebp - 0x28]
cmp esi, eax
je 0x100071a5
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10001bf0
mov al, byte [ebp - 0x2c]
mov byte [esi + 0x18], al
mov al, byte [ebp - 0x30]
mov byte [esi + 0x19], al
mov al, byte [ebp - 0x34]
mov byte [esi + 0x1a], al
jmp 0x100071d0
test esi, esi
je 0x100071f1
mov ecx, esi
call fcn.1000662a
mov edx, ebx
mov ecx, 0x1009ec1c
call fcn.10005e56
mov ecx, edi
call fcn.10008e74
mov esi, eax
test esi, esi
je 0x100071f1
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x100071f1
mov ecx, esi
call fcn.10015d3f
push 0
push 1
lea ecx, [ebp - 0x28]
call fcn.10001e1f
call fcn.10046009
ret
push ecx
push esi
mov esi, dword [0x1009e6ec]
push edi
mov edi, ecx
test esi, esi
je 0x10034907
call fcn.1000678f
cmp al, 1
jne 0x100348c7
mov ecx, dword [esi + 0x90]
test ecx, ecx
je 0x10034907
push edi
call fcn.10036ca4
jmp 0x10034907
cmp al, 2
jne 0x100348dd
mov ecx, dword [esi + 0x88]
test ecx, ecx
je 0x10034907
push edi
call fcn.1003490b
jmp 0x10034907
cmp al, 3
jne 0x100348f3
mov ecx, dword [esi + 0x8c]
test ecx, ecx
je 0x10034907
push edi
call fcn.100357a6
jmp 0x10034907
cmp al, 4
jne 0x10034907
mov ecx, dword [esi + 0x90]
test ecx, ecx
je 0x10034907
push edi
call fcn.10036d72
pop edi
pop esi
pop ecx
ret