Function at 0x101065f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14
mov eax, 0xf6
push ebx
cdq
idiv dword [0x1018cd00]
mov eax, dword [0x1018ccfc]
push ebp
mov ebp, dword [esp + 0x24]
push esi
push edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x1c], ecx
cmp ebp, edi
mov cl, byte [edx + eax]
mov byte [0x1018cd10], cl
jne 0x10106631
mov eax, dword [esp + 0x28]
mov dword [eax], edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret 0xc
mov dl, byte [0x1018cd11]
push edx
call fcn.10108120
add esp, 4
call fcn.10108160
mov eax, dword [ebp]
mov dword [esp + 0x18], eax
call fcn.10108160
mov al, byte [0x10195208]
mov word [esp + 0x10], 0xb
test al, 1
mov word [esp + 0x12], 0xfff7
mov word [esp + 0x14], 0xfffc
jne 0x10106696
mov bl, al
lea ecx, [esp + 0x10]
or bl, 1
push ecx
mov ecx, 0x1019520c
mov byte [0x10195208], bl
call fcn.10107660
push 0x101086b0
call fcn.1013c36b
add esp, 4
mov eax, dword [0x1019520c]
add ebp, 0x20
push eax
mov ecx, ebp
call fcn.10015bd0
test eax, eax
je 0x101069e2
mov al, byte [0x10195210]
xor ebx, ebx
test al, 1
mov word [esp + 0x10], 0x5e
mov word [esp + 0x12], bx
mov word [esp + 0x14], 0x1d
jne 0x101066ef
lea edx, [esp + 0x10]
or al, 1
push edx
mov ecx, 0x10195214
mov byte [0x10195210], al
call fcn.100157c0
push 0x101086c0
call fcn.1013c36b
add esp, 4
mov eax, dword [0x10195214]
mov ecx, ebp
push eax
call fcn.10015bd0
test eax, eax
je 0x101069a0
mov al, byte [0x10195218]
mov word [esp + 0x10], 7
test al, 1
mov word [esp + 0x12], 0x19
mov word [esp + 0x14], 0x1a
jne 0x10106747
or al, 1
push 0x69
mov byte [0x10195218], al
lea eax, [esp + 0x14]
push eax
mov ecx, 0x1019521c
call fcn.100776d0
push 0x101086d0
call fcn.1013c36b
add esp, 4
mov eax, dword [0x1019521c]
mov ecx, ebp
push eax
call fcn.10015bd0
test eax, eax
je 0x101069a0
mov eax, 0x4e
mov word [esp + 0x10], ax
mov word [esp + 0x12], ax
mov al, byte [0x10195220]
test al, 1
jne 0x10106799
lea ecx, [esp + 0x10]
push 0x20
or al, 1
push ecx
mov ecx, 0x10195224
mov byte [0x10195220], al
call fcn.10087b90
push 0x101086e0
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10195224]
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 0x101069a0
mov al, byte [0x10195228]
mov word [esp + 0x10], 0x2f
test al, 1
mov word [esp + 0x12], 0x31
jne 0x101067f8
or al, 1
mov ecx, 0x1019522c
mov byte [0x10195228], al
lea eax, [esp + 0x10]
push eax
call fcn.101076e0
push 0x101086f0
call fcn.1013c36b
add esp, 4
mov esi, dword [0x1019522c]
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 0x101069a0
mov al, byte [0x10195230]
mov edi, 0x5a
test al, 1
mov word [esp + 0x10], di
mov word [esp + 0x12], bx
mov word [esp + 0x14], 0x1e
jne 0x1010685f
lea edx, [esp + 0x10]
or al, 1
push edx
mov ecx, 0x10195234
mov byte [0x10195230], al
call fcn.100157c0
push 0x10108700
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10195234]
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 0x1010699c
mov al, byte [0x10195238]
mov word [esp + 0x10], di
test al, 1
mov word [esp + 0x12], bx
jne 0x101068ba
lea ecx, [esp + 0x10]
or al, 1
push ecx
mov ecx, 0x1019523c
mov byte [0x10195238], al
call fcn.100154b0
push 0x10108710
call fcn.1013c36b
add esp, 4
mov esi, dword [0x1019523c]
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 0x1010699c
mov al, byte [0x10195240]
mov word [esp + 0x10], 0x81
test al, 1
mov word [esp + 0x12], 0x86
jne 0x1010691e
or al, 1
push 0xe2
mov byte [0x10195240], al
lea eax, [esp + 0x14]
push eax
mov ecx, 0x10195244
call fcn.10087b90
push 0x10108720
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10195244]
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 0x1010699c
mov al, byte [0x10195248]
mov word [esp + 0x10], 0x26
test al, 1
mov word [esp + 0x12], 0x3b
jne 0x1010697b
lea edx, [esp + 0x10]
or al, 1
push 0x57
push edx
mov ecx, 0x1019524c
mov byte [0x10195248], al
call fcn.10087b90
push 0x10108770
call fcn.1013c36b
add esp, 4
mov esi, dword [0x1019524c]
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
jne 0x101069e6
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x18]
push edi
lea ecx, [esp + 0x34]
push esi
push ecx
mov ecx, dword [esp + 0x28]
mov byte [0x1018cd11], 0x2f
call fcn.10106c90
mov cl, byte [0x1018cd10]
add cl, 2
mov byte [0x1018cd10], cl
mov ecx, dword [esp + 0x30]
cmp esi, ecx
je 0x101069e6
mov eax, dword [esp + 0x28]
pop edi
pop esi
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 0x14
ret 0xc
xor ebx, ebx
jmp 0x101069a0
mov eax, 0xff9f
mov word [esp + 0x20], 0xffa4
mov word [esp + 0x1c], ax
mov word [esp + 0x1e], ax
mov al, byte [0x10195250]
test al, 1
jne 0x10106a28
lea edx, [esp + 0x1c]
or al, 1
push edx
mov ecx, 0x10195254
mov byte [0x10195250], al
call fcn.10107760
push 0x10108780
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10195254]
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 0x10106c79
mov al, byte [0x10195258]
mov word [esp + 0x1c], 0x60
test al, 1
mov word [esp + 0x1e], 0x7e
mov word [esp + 0x20], 0x7d
jne 0x10106a90
lea ecx, [esp + 0x1c]
push 0xe
or al, 1
push ecx
mov ecx, 0x1019525c
mov byte [0x10195258], al
call fcn.100776d0
push 0x10108790
call fcn.1013c36b
add esp, 4
mov esi, dword [0x1019525c]
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 0x10106c79
mov al, byte [0x10195260]
mov word [esp + 0x30], 0x5e
test al, 1
mov word [esp + 0x32], bx
jne 0x10106b33
or al, 1
push 6
mov byte [0x10195260], al
call fcn.1013c2df
add esp, 4
mov dword [0x10195264], eax
mov edi, 0x30
xor esi, esi
mov bx, word [esp + esi + 0x30]
push edi
mov eax, ebx
mov ecx, 0x10195264
and eax, 0xffff
push eax
call fcn.1004a650
mov ecx, dword [0x10195264]
xor eax, edi
xor eax, ebx
xor edi, edi
mov word [esi + ecx], ax
mov eax, dword [0x10195264]
mov di, word [esi + eax]
add esi, 2
cmp esi, 4
jb 0x10106ae7
push 0x101087a0
mov word [eax + 4], 0
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10195264]
push edi
call fcn.1013c2c2
mov ebx, dword [ebp + 8]
add esp, 4
cmp ebx, eax
mov esi, ebx
jb 0x10106b4d
mov esi, eax
mov ecx, dword [ebp + 4]
mov edx, edi
test esi, esi
jbe 0x10106b79
mov di, word [ecx]
cmp di, word [edx]
jne 0x10106b69
add ecx, 2
add edx, 2
dec esi
jne 0x10106b56
jmp 0x10106b79
mov cx, word [ecx]
cmp cx, word [edx]
sbb ecx, ecx
and ecx, 0xfffffffe
inc ecx
test ecx, ecx
jne 0x10106b8c
cmp ebx, eax
jb 0x10106b8c
xor ecx, ecx
cmp ebx, eax
setne cl
test ecx, ecx
je 0x10106c79
mov al, byte [0x10195268]
mov word [esp + 0x30], 0xff8e
test al, 1
mov word [esp + 0x32], 0xff90
jne 0x10106c0e
mov bl, al
push 6
or bl, 1
mov byte [0x10195268], bl
call fcn.1013c2df
add esp, 4
mov dword [0x1019526c], eax
xor edi, edi
mov si, word [esp + edi + 0x30]
push 0xe0
mov edx, esi
mov ecx, 0x1019526c
and edx, 0xffff
push edx
call fcn.1002ea10
sub esi, eax
mov eax, dword [0x1019526c]
add esi, 0xe0
mov word [edi + eax], si
add edi, 2
cmp edi, 4
jb 0x10106bbf
mov ecx, dword [0x1019526c]
push 0x101087b0
mov word [ecx + 4], 0
call fcn.1013c36b
add esp, 4
mov edi, dword [0x1019526c]
push edi
call fcn.1013c2c2
mov ebx, dword [ebp + 8]
add esp, 4
cmp ebx, eax
mov esi, ebx
jb 0x10106c28
mov esi, eax
mov ebp, dword [ebp + 4]
mov edx, edi
test esi, esi
mov ecx, ebp
jbe 0x10106c56
mov di, word [ecx]
cmp di, word [edx]
jne 0x10106c46
add ecx, 2
add edx, 2
dec esi
jne 0x10106c33
jmp 0x10106c56
mov cx, word [ecx]
cmp cx, word [edx]
sbb ecx, ecx
and ecx, 0xfffffffe
inc ecx
test ecx, ecx
jne 0x10106c65
cmp ebx, eax
jb 0x10106c65
xor ecx, ecx
cmp ebx, eax
setne cl
test ecx, ecx
je 0x10106c79
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
pop edi
pop esi
pop ebp
mov dword [eax], edx
pop ebx
add esp, 0x14
ret 0xc
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
pop edi
pop esi
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 0x14
ret 0xc