Function at 0x10106c90
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x10
push ebx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x20]
push ebp
mov ebp, dword [esp + 0x20]
push esi
cmp ebp, ecx
push edi
jne 0x10106cb7
mov eax, dword [esp + 0x24]
pop edi
pop esi
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 0x10
ret 0xc
mov al, byte [0x101951b8]
mov edi, dword [ebp]
test al, 1
mov dword [esp + 0x1c], edi
mov word [esp + 0x10], 0x51
mov word [esp + 0x12], 0x15
jne 0x10106cfc
mov bl, al
lea eax, [esp + 0x10]
or bl, 1
push eax
mov ecx, 0x101951bc
mov byte [0x101951b8], bl
call fcn.100154b0
push 0x101087c0
call fcn.1013c36b
add esp, 4
mov eax, dword [0x101951bc]
add ebp, 0x20
push eax
mov ecx, ebp
call fcn.10015bd0
test eax, eax
je 0x10107102
mov al, byte [0x101951c0]
xor ebx, ebx
test al, 1
mov word [esp + 0x10], 0x5e
mov word [esp + 0x12], bx
mov word [esp + 0x14], 0x1d
jne 0x10106d55
lea ecx, [esp + 0x10]
or al, 1
push ecx
mov ecx, 0x101951c4
mov byte [0x101951c0], al
call fcn.100157c0
push 0x101087d0
call fcn.1013c36b
add esp, 4
mov eax, dword [0x101951c4]
mov ecx, ebp
push eax
call fcn.10015bd0
test eax, eax
je 0x10107102
mov al, byte [0x101951c8]
mov word [esp + 0x10], 0xffa3
test al, 1
mov word [esp + 0x12], 0xffa5
mov word [esp + 0x14], 0xffa8
jne 0x10106dab
lea edx, [esp + 0x10]
or al, 1
push edx
mov ecx, 0x101951cc
mov byte [0x101951c8], al
call fcn.101077e0
push 0x101087e0
call fcn.1013c36b
add esp, 4
mov esi, dword [0x101951cc]
push esi
call fcn.1013c2c2
add esp, 4
mov ecx, ebp
push eax
mov eax, dword [ebp + 8]
push esi
push eax
push ebx
call fcn.1000d2b0
test eax, eax
je 0x10107102
mov al, byte [0x101951d0]
mov word [esp + 0x10], 0xf6
test al, 1
mov word [esp + 0x12], 0xe8
jne 0x10106e0f
lea ecx, [esp + 0x10]
push 0x98
or al, 1
push ecx
mov ecx, 0x101951d4
mov byte [0x101951d0], al
call fcn.10087b90
push 0x101087f0
call fcn.1013c36b
add esp, 4
mov esi, dword [0x101951d4]
push esi
call fcn.1013c2c2
mov edx, dword [ebp + 8]
add esp, 4
mov ecx, ebp
push eax
push esi
push edx
push ebx
call fcn.1000d2b0
test eax, eax
je 0x10107102
mov eax, 0x9a
mov word [esp + 0x10], ax
mov word [esp + 0x12], ax
mov al, byte [0x101951d8]
test al, 1
jne 0x10106e74
or al, 1
push 0xf4
mov byte [0x101951d8], al
lea eax, [esp + 0x14]
push eax
mov ecx, 0x101951dc
call fcn.10087b90
push 0x10108800
call fcn.1013c36b
add esp, 4
mov esi, dword [0x101951dc]
push esi
call fcn.1013c2c2
mov ecx, dword [ebp + 8]
add esp, 4
push eax
push esi
push ecx
push ebx
mov ecx, ebp
call fcn.1000d2b0
test eax, eax
je 0x10107102
mov eax, 0xc2
mov word [esp + 0x14], 0xdc
mov word [esp + 0x10], ax
mov word [esp + 0x12], ax
mov al, byte [0x101951e0]
test al, 1
jne 0x10106ee4
mov cl, al
lea edx, [esp + 0x10]
or cl, 1
push 0xa8
mov byte [0x101951e0], cl
push edx
mov ecx, 0x101951e4
call fcn.100776d0
push 0x10108810
call fcn.1013c36b
add esp, 4
mov esi, dword [0x101951e4]
push esi
call fcn.1013c2c2
add esp, 4
mov ecx, ebp
push eax
mov eax, dword [ebp + 8]
push esi
push eax
push ebx
call fcn.1000d2b0
test eax, eax
je 0x10107102
mov al, byte [0x101951e8]
mov word [esp + 0x10], 0x5a
test al, 1
mov word [esp + 0x12], bx
jne 0x10106f41
lea ecx, [esp + 0x10]
or al, 1
push ecx
mov ecx, 0x101951ec
mov byte [0x101951e8], al
call fcn.100154b0
push 0x10108820
call fcn.1013c36b
add esp, 4
mov esi, dword [0x101951ec]
push esi
call fcn.1013c2c2
mov edx, dword [ebp + 8]
add esp, 4
mov ecx, ebp
push eax
push esi
push edx
push ebx
call fcn.1000d2b0
test eax, eax
je 0x10107102
mov al, byte [0x101951f0]
mov word [esp + 0x10], 0x1a
test al, 1
mov word [esp + 0x12], 0x1d
jne 0x10106fa2
or al, 1
push 0x73
mov byte [0x101951f0], al
lea eax, [esp + 0x14]
push eax
mov ecx, 0x101951f4
call fcn.10087b90
push 0x10108830
call fcn.1013c36b
add esp, 4
mov esi, dword [0x101951f4]
push esi
call fcn.1013c2c2
mov ecx, dword [ebp + 8]
add esp, 4
push eax
push esi
push ecx
push ebx
mov ecx, ebp
call fcn.1000d2b0
test eax, eax
je 0x10107102
mov al, byte [0x101951f8]
mov word [esp + 0x10], 0x34
test al, 1
mov word [esp + 0x12], 0x35
jne 0x10107001
lea edx, [esp + 0x10]
or al, 1
push edx
mov ecx, 0x101951fc
mov byte [0x101951f8], al
call fcn.10107860
push 0x10108840
call fcn.1013c36b
add esp, 4
mov esi, dword [0x101951fc]
push esi
call fcn.1013c2c2
add esp, 4
mov ecx, ebp
push eax
mov eax, dword [ebp + 8]
push esi
push eax
push ebx
call fcn.1000d2b0
test eax, eax
je 0x10107102
mov al, byte [0x10195200]
mov word [esp + 0x10], 0x41
test al, 1
mov word [esp + 0x12], 0x1d
jne 0x101070a7
or al, 1
push 6
mov byte [0x10195200], al
call fcn.1013c2df
add esp, 4
mov dword [0x10195204], eax
mov edi, 0x30
xor esi, esi
mov bx, word [esp + esi + 0x10]
push edi
mov ecx, ebx
and ecx, 0xffff
push ecx
mov ecx, 0x10195204
call fcn.1004a650
mov edx, dword [0x10195204]
xor eax, ebx
xor eax, edi
xor edi, edi
mov word [esi + edx], ax
mov eax, dword [0x10195204]
mov di, word [esi + eax]
add esi, 2
cmp esi, 4
jb 0x1010705a
push 0x10108850
mov word [eax + 4], 0
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10195204]
push edi
call fcn.1013c2c2
mov ebx, dword [ebp + 8]
add esp, 4
cmp ebx, eax
mov esi, ebx
jb 0x101070c1
mov esi, eax
mov ebp, dword [ebp + 4]
mov edx, edi
test esi, esi
mov ecx, ebp
jbe 0x101070ef
mov di, word [ecx]
cmp di, word [edx]
jne 0x101070df
add ecx, 2
add edx, 2
dec esi
jne 0x101070cc
jmp 0x101070ef
mov cx, word [ecx]
cmp cx, word [edx]
sbb ecx, ecx
and ecx, 0xfffffffe
inc ecx
test ecx, ecx
jne 0x1010713c
cmp ebx, eax
jb 0x1010713c
xor ecx, ecx
cmp ebx, eax
setne cl
test ecx, ecx
jne 0x1010713c
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
push edx
lea eax, [esp + 0x20]
push edi
push eax
call fcn.10106c90
mov cl, byte [0x1018cd10]
dec cl
mov byte [0x1018cd10], cl
mov ecx, dword [esp + 0x1c]
cmp ecx, edi
je 0x1010713c
mov eax, dword [esp + 0x24]
pop edi
pop esi
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 0x10
ret 0xc
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push esi
call fcn.10107160
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 0xc