Function at 0xf15893
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov al, byte [edx]
mov bl, 1
test al, al
je 0xf151a3
mov esi, ecx
mov ecx, dword [ecx + 0x160]
mov edi, edx
lea edx, [esi + 0x19c]
mov ebp, edi
mov dword [esp], edx
lea edx, [ecx + 0x3c]
mov dword [esp + 0x18], ecx
mov dword [esp + 0xc], edx
lea edx, [ecx + 0x50]
lea ecx, [ecx + 0x98]
mov dword [esp + 8], edx
lea edx, [esi + 0x170]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
test al, al
je 0xf15187
cmp al, 0x3d
je 0xf151f9
cmp al, 0xc
jne 0xf15334
mov eax, dword [esi + 0x1a8]
cmp eax, dword [esi + 0x1a4]
jne 0xf151b3
mov ecx, dword [esp]
call fcn.00f192e2
test al, al
jne 0xf151ad
xor ebx, ebx
mov eax, ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esi + 0x1a8]
mov edx, dword [esp + 0x18]
lea ecx, [eax + 1]
mov dword [esi + 0x1a8], ecx
mov byte [eax], 0
mov ecx, esi
push 0
push dword [esi + 0x1ac]
call fcn.00f18bb8
add esp, 8
test eax, eax
je 0xf151dd
mov byte [eax + 0x20], 1
cmp byte [edi], 0
mov eax, dword [esi + 0x1ac]
lea ebp, [edi + 1]
cmove ebp, edi
mov dword [esi + 0x1a8], eax
mov edi, ebp
jmp 0xf15366
mov eax, dword [esi + 0x1a8]
mov ebp, dword [esp]
cmp dword [esi + 0x1ac], eax
jne 0xf15214
mov ecx, dword [esp + 0x10]
mov dword [esp + 4], ecx
jmp 0xf1528c
cmp eax, dword [esi + 0x1a4]
jne 0xf15231
mov ecx, ebp
call fcn.00f192e2
test al, al
je 0xf151a1
mov eax, dword [esi + 0x1a8]
mov edx, dword [esp + 0xc]
lea ecx, [eax + 1]
mov dword [esi + 0x1a8], ecx
mov byte [eax], 0
mov ecx, esi
push 8
push dword [esi + 0x1ac]
call fcn.00f18bb8
add esp, 8
test eax, eax
je 0xf151a1
mov ebx, eax
mov edx, dword [eax]
mov eax, dword [esi + 0x1ac]
cmp edx, eax
jne 0xf15282
mov ecx, dword [esp + 8]
call fcn.00f15640
test eax, eax
mov dword [ebx], eax
je 0xf151a1
mov eax, dword [esi + 0x1ac]
mov dword [esp + 4], ebx
mov dword [esi + 0x1a8], eax
mov cl, byte [edi + 1]
mov edx, dword [esi + 0x1a4]
lea ebx, [edi + 1]
test cl, cl
je 0xf152d1
cmp cl, 0xc
je 0xf152d1
cmp eax, edx
jne 0xf152bc
mov ecx, ebp
call fcn.00f192e2
test al, al
je 0xf151a1
mov cl, byte [ebx]
mov eax, dword [esi + 0x1a8]
lea edx, [eax + 1]
mov edi, ebx
mov dword [esi + 0x1a8], edx
mov byte [eax], cl
mov eax, dword [esi + 0x1a8]
jmp 0xf1528c
cmp eax, edx
jne 0xf152ea
mov ecx, ebp
call fcn.00f192e2
test al, al
je 0xf151a1
mov eax, dword [esi + 0x1a8]
mov edx, dword [esp + 4]
lea ecx, [eax + 1]
mov dword [esi + 0x1a8], ecx
mov byte [eax], 0
mov ecx, esi
push dword [esp + 0x14]
push dword [esi + 0x1ac]
push 0
call fcn.00f1c089
add esp, 0xc
test eax, eax
jne 0xf151a1
mov eax, dword [esi + 0x1ac]
lea ebp, [edi + 2]
mov dword [esi + 0x1a8], eax
cmp byte [edi + 1], 0
cmove ebp, ebx
mov bl, 1
mov edi, ebp
jmp 0xf15366
mov ecx, dword [esi + 0x1a8]
cmp ecx, dword [esi + 0x1a4]
jne 0xf1535a
mov ecx, dword [esp]
call fcn.00f192e2
test al, al
je 0xf151a1
mov al, byte [edi]
mov ecx, dword [esi + 0x1a8]
lea edx, [ecx + 1]
inc edi
mov dword [esi + 0x1a8], edx
mov byte [ecx], al
cmp byte [ebp], 0
je 0xf151a3
mov al, byte [edi]
jmp 0xf15177
push ebp
push ebx
push edi
push esi
cmp dword [ecx + 0x1ec], 0
mov esi, ecx
jne 0xf158ad
call fcn.00f1cc04
mov dword [esi + 0x1ec], eax
cmp byte [esi + 0xe8], 0
je 0xf159ed
mov edx, fcn.00f15100
mov eax, fcn.00f15100
movzx ecx, byte [0x11683af]
and edx, 1
xor edx, eax
cmp edx, 0xffffffff
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0xf159dd
mov al, byte [0x11683af]
cmp edx, 0xffffffff
mov ah, 1
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0x11683af], ah
jne 0xf158e9
mov ecx, fcn.00f15100
mov edx, fcn.00f15100
movzx eax, al
and ecx, 1
xor ecx, edx
cmp ecx, 0xffffffff
sete dl
or dl, 6
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0xf15947
cmp ecx, 0xffffffff
movzx edx, byte [0x11683af]
sete al
or al, 6
movzx eax, al
bt edx, eax
jae 0xf1592b
jmp 0xf159dd
xor edx, edx
cmp ecx, 0xffffffff
movzx ecx, byte [0x11683af]
sete dl
or edx, 0xea6ac08e
add edx, 0x1280
mov eax, edx
and al, 7
movzx eax, al
bt ecx, eax
jb 0xf159b8
mov edi, 0x1168380
xor eax, eax
mov ebx, dword [edi]
mov ecx, eax
mov ebp, edx
inc eax
shl ebp, cl
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov dword [edi], ebx
or edx, ebp
not ebx
add edi, 4
imul edx, ebx
cmp eax, 0xb
jne 0xf15975
mov ecx, fcn.00f15100
mov eax, fcn.00f15100
and ecx, 1
xor ecx, eax
mov al, 1
cmp ecx, 0xffffffff
sete cl
or cl, 6
shl al, cl
or byte [0x11683af], al
mov ecx, fcn.00f15100
mov eax, fcn.00f15100
and ecx, 1
xor ecx, eax
mov al, 0xfe
cmp ecx, 0xffffffff
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0x11683af], al
mov ecx, esi
mov edx, 0x1168380
pop esi
pop edi
pop ebx
pop ebp
jmp 0xf1512d
mov al, 1
pop esi
pop edi
pop ebx
pop ebp
ret