Function at 0x1000a0bb
Capabilities:
Encode data using xor

Disassembly:
push esi
mov esi, ecx
call fcn.10009ee7
movzx eax, al
dec eax
cmp eax, 0x11
ja case.0x1000a0d0.3
jmp dword [eax*4 + 0x1000a217]
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x24]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.10018784
pop esi
ret
mov ecx, esi
pop esi
jmp 0x1000a25f
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x3c]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.1001e7fb
pop esi
ret
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x40]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.10021442
pop esi
ret
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x50]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.10029310
pop esi
ret
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x44]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.100242a0
pop esi
ret
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x48]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.10025960
pop esi
ret
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x4c]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.10027ca0
pop esi
ret
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x58]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.1002e37b
pop esi
ret
mov eax, dword [0x100a6050]
test eax, eax
je case.0x1000a0d0.3
mov ecx, dword [eax + 0x38]
test ecx, ecx
je case.0x1000a0d0.3
push esi
call fcn.1001af35
pop esi
ret
mov ecx, esi
pop esi
jmp 0x1000a530
mov ecx, esi
pop esi
jmp 0x1000a5cb
mov ecx, esi
pop esi
jmp 0x1000a700
mov ecx, esi
pop esi
jmp 0x1000a768
cmp dword [0x100a6048], 0
je case.0x1000a0d0.3
push esi
call fcn.10012e18
pop esi
ret
push 0xa4
mov eax, 0x10078404
call fcn.10040a29
mov esi, ecx
call fcn.10009ee7
mov ecx, esi
mov bl, al
call fcn.10009d5d
mov ecx, esi
mov edi, eax
call fcn.10009d5d
mov esi, eax
cmp bl, 1
je 0x1000a2a1
cmp bl, 2
je 0x1000a2a1
mov edx, dword [0x100a6050]
mov ecx, dword [0x100a6048]
jmp 0x1000a2cb
mov edx, dword [0x100a6050]
test edx, edx
je 0x1000a2be
mov ecx, dword [edx + 0x58]
test ecx, ecx
je 0x1000a2be
push esi
call fcn.100300b5
mov edx, dword [0x100a6050]
mov ecx, dword [0x100a6048]
test ecx, ecx
je 0x1000a2cb
mov dword [ecx + 0x4c], esi
cmp bl, 3
je 0x1000a2d5
cmp bl, 4
jne 0x1000a2f5
test edx, edx
je 0x1000a2ee
cmp dword [edx + 0x58], 0
je 0x1000a2ee
mov ecx, dword [edx + 0x58]
push esi
call fcn.10030114
mov ecx, dword [0x100a6048]
test ecx, ecx
je 0x1000a2f5
mov dword [ecx + 0x50], esi
movzx eax, bl
sub eax, 1
je 0x1000a4a1
sub eax, 1
je 0x1000a437
sub eax, 1
je 0x1000a3b6
sub eax, 1
jne 0x1000a52a
movaps xmm0, xmmword [0x100952f0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 0x2a481c0e
mov ecx, ebx
mov dword [ebp - 0x34], 0x6090409
mov dword [ebp - 0x30], 0x460d0b
mov al, byte [ebp - 0x48]
xor byte [ebp + ecx - 0x47], al
inc ecx
cmp ecx, 0x1a
jb 0x1000a341
sub esp, 0x18
mov byte [ebp - 0x2d], bl
lea eax, [ebp - 0x47]
mov ecx, esp
push eax
call fcn.10004181
lea eax, [ebp - 0xb0]
push eax
call fcn.10003c4b
add esp, 0x20
mov dword [ebp - 4], 6
cmp dword [eax + 0x14], 0x10
jb 0x1000a37d
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x98]
call fcn.10004181
mov edx, 0xffff3b3b
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x98]
call fcn.1000a59e
push ebx
push 1
lea ecx, [ebp - 0x98]
call fcn.10004036
lea ecx, [ebp - 0xb0]
jmp 0x1000a522
movaps xmm0, xmmword [0x10095800]
xor ebx, ebx
movups xmmword [ebp - 0x68], xmm0
mov ecx, ebx
movaps xmm0, xmmword [0x10095190]
push edi
movups xmmword [ebp - 0x58], xmm0
mov al, byte [ebp - 0x68]
xor byte [ebp + ecx - 0x67], al
inc ecx
cmp ecx, 0x1e
jb 0x1000a3d1
sub esp, 0x18
mov byte [ebp - 0x49], bl
lea eax, [ebp - 0x67]
mov ecx, esp
push eax
call fcn.10004181
lea eax, [ebp - 0x80]
push eax
call fcn.10003c4b
add esp, 0x20
mov dword [ebp - 4], 4
cmp dword [eax + 0x14], 0x10
jb 0x1000a40a
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x28]
call fcn.10004181
mov edx, 0xff6565ff
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x28]
call fcn.1000a59e
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10004036
lea ecx, [ebp - 0x80]
jmp 0x1000a522
movaps xmm0, xmmword [0x10095c90]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x24], xmm0
mov dword [ebp - 0x14], 0x110a183a
mov ecx, ebx
mov word [ebp - 0x10], 0x57
mov al, byte [ebp - 0x24]
xor byte [ebp + ecx - 0x23], al
inc ecx
cmp ecx, 0x14
jb 0x1000a454
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x23]
mov ecx, esp
push eax
call fcn.10004181
lea eax, [ebp - 0x60]
push eax
call fcn.10003c4b
add esp, 0x20
mov dword [ebp - 4], 2
cmp dword [eax + 0x14], 0x10
jb 0x1000a48d
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x80]
call fcn.10004181
mov byte [ebp - 4], 3
mov edx, 0xffff3b3b
jmp 0x1000a50c
movaps xmm0, xmmword [0x100954f0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], 0x5d09151a
mov ecx, ebx
mov dword [ebp - 0x14], 0x150e1c3e
mov word [ebp - 0x10], 0x53
mov al, byte [ebp - 0x28]
xor byte [ebp + ecx - 0x27], al
inc ecx
cmp ecx, 0x18
jb 0x1000a4c5
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x27]
mov ecx, esp
push eax
call fcn.10004181
lea eax, [ebp - 0x60]
push eax
call fcn.10003c4b
add esp, 0x20
mov dword [ebp - 4], ebx
cmp dword [eax + 0x14], 0x10
jb 0x1000a4fa
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x80]
call fcn.10004181
mov byte [ebp - 4], 1
mov edx, 0xff6565ff
lea ecx, [ebp - 0x80]
call fcn.1000a59e
push ebx
push 1
lea ecx, [ebp - 0x80]
call fcn.10004036
lea ecx, [ebp - 0x60]
push ebx
push 1
call fcn.10004036
call fcn.100409f2
ret
push 0x34
mov eax, 0x10078432
call fcn.10040a5d
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.10009e0e
mov ecx, eax
call fcn.10009d5d
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.10004181
mov edx, esi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x40]
call fcn.1000a59e
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.10004036
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10004036
call fcn.10040a07
ret
push 0x64
mov eax, 0x10078477
call fcn.10040a5d
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.10009e0e
mov ecx, eax
call fcn.10009e0e
cmp dword [ebp - 0x30], ebx
je 0x1000a617
cmp dword [ebp - 0x30], 0xff
ja 0x1000a681
cmp dword [ebp - 0x18], 0
je 0x1000a623
cmp dword [ebp - 0x18], 0x1e
ja 0x1000a681
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x70]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.10004181
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.10004181
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 [0x10093d04]
push ebx
push 1
lea ecx, [ebp - 0x58]
call fcn.10004036
push ebx
push 1
lea ecx, [ebp - 0x70]
call fcn.10004036
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10004036
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.10004036
call fcn.10040a07
ret
push 0x1c
mov eax, 0x100784a4
call fcn.10040a5d
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.10009e0e
cmp dword [ebp - 0x18], 0
je 0x1000a756
mov ecx, ebx
call fcn.10009d5d
mov ecx, ebx
mov edi, eax
call fcn.10009d5d
mov ecx, ebx
mov esi, eax
call fcn.10009d5d
push eax
push esi
mov edx, edi
lea ecx, [ebp - 0x28]
call fcn.1000a69d
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x28]
call fcn.10004036
call fcn.10040a07
ret
push 0x34
mov eax, 0x10078505
call fcn.10040a5d
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.10009ee7
mov ecx, esi
mov bl, al
call fcn.10009d5d
movzx ecx, bl
mov edi, eax
sub ecx, 1
je 0x1000a929
sub ecx, 1
je 0x1000a913
sub ecx, 1
je 0x1000a80b
sub ecx, 1
jne 0x1000aa3a
mov edx, edi
call fcn.10009362
test eax, eax
je 0x1000aa3a
mov ecx, eax
call fcn.10009d82
mov edx, edi
mov ecx, 0x100aa4a8
call fcn.100092cd
mov ecx, edi
call fcn.1000b42f
mov esi, eax
test esi, esi
je 0x1000aa3a
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x1000aa3a
mov ecx, esi
call fcn.10013100
jmp 0x1000aa3a
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.10009e0e
mov esi, eax
mov ecx, esi
call fcn.10009ee7
mov bl, al
mov ecx, esi
mov byte [ebp - 0x38], bl
call fcn.10009ee7
mov bh, al
mov ecx, esi
mov byte [ebp - 0x34], bh
call fcn.10009ee7
mov edx, edi
mov byte [ebp - 0x30], al
call fcn.10009362
cmp dword [ebp - 0x1c], 0
mov esi, eax
je 0x1000aa3a
test esi, esi
jne 0x1000a8ef
push 0x1c
call fcn.1003fdd6
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.10003baa
mov ecx, esi
call fcn.10009da0
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.1003fdd6
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.10003baa
mov ecx, esi
call fcn.10009da0
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.100093d5
test al, al
jne 0x1000a7dd
test ebx, ebx
je 0x1000a7dd
push 0
push 1
mov ecx, ebx
call fcn.10004036
push 0x1c
push ebx
call fcn.10040488
pop ecx
pop ecx
jmp 0x1000a7dd
lea eax, [ebp - 0x2c]
cmp esi, eax
je 0x1000a902
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10003e07
mov al, byte [ebp - 0x30]
mov byte [esi + 0x18], bl
mov byte [esi + 0x19], bh
mov byte [esi + 0x1a], al
jmp 0x1000a7dd
mov edx, edi
call fcn.10009362
test eax, eax
je 0x1000aa3a
mov ecx, eax
jmp 0x1000aa29
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.10009e0e
mov esi, eax
mov ecx, esi
call fcn.10009ee7
mov bl, al
mov ecx, esi
mov byte [ebp - 0x38], bl
call fcn.10009ee7
mov bh, al
mov ecx, esi
mov byte [ebp - 0x34], bh
call fcn.10009ee7
mov edx, edi
mov byte [ebp - 0x30], al
call fcn.10009362
cmp dword [ebp - 0x1c], 0
mov esi, eax
je 0x1000aa23
test esi, esi
jne 0x1000aa02
push 0x1c
call fcn.1003fdd6
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.10003baa
mov ecx, esi
call fcn.10009da0
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.1003fdd6
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.10003baa
mov ecx, esi
call fcn.10009da0
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.100093d5
test al, al
jne 0x1000aa3a
test ebx, ebx
je 0x1000aa3a
push 0
push 1
mov ecx, ebx
call fcn.10004036
push 0x1c
push ebx
call fcn.10040488
pop ecx
pop ecx
jmp 0x1000aa3a
lea eax, [ebp - 0x2c]
cmp esi, eax
je 0x1000aa15
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10003e07
mov al, byte [ebp - 0x30]
mov byte [esi + 0x18], bl
mov byte [esi + 0x19], bh
mov byte [esi + 0x1a], al
jmp 0x1000aa3a
test esi, esi
je 0x1000aa3a
mov ecx, esi
call fcn.10009d82
mov edx, edi
mov ecx, 0x100aa4a8
call fcn.100092cd
push 0
push 1
lea ecx, [ebp - 0x2c]
call fcn.10004036
call fcn.10040a07
ret