Function at 0x9773c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, 0x9794b0
xor esi, esi
mov dword [esp + 8], ecx
not eax
and eax, 1
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
xor eax, eax
mov edi, dword [esi*4 + 0xb6bf20]
mov ebp, dword [esi*4 + str._f_f_f_f]
mov dword [esp + 0x18], esi
add ecx, 0x9794b0
sete al
mov ecx, eax
not ecx
and ecx, 0x387
lea edx, [eax + ecx*2 + 0x75d92c28]
mov eax, 1
xor edx, dword [esi*4 + 0xb6bf60]
mov ecx, edx
and cl, 7
movzx ebx, cl
shl eax, cl
xor cl, 7
mov dword [esp], ebx
mov ebx, 1
shl ebx, cl
movzx ecx, byte [edi + ebp - 1]
mov esi, dword [esp]
bt ecx, esi
jb 0x9774c4
mov dword [esp + 4], eax
mov al, byte [edi + ebp - 1]
mov ecx, eax
or cl, bl
lock cmpxchg byte [edi + ebp - 1], cl
jne 0x977449
mov ecx, dword [esp + 4]
movzx eax, al
test ebx, eax
je 0x97746b
movzx eax, byte [edi + ebp - 1]
test ecx, eax
je 0x977460
jmp 0x9774c4
mov dword [esp + 0xc], ebx
movzx eax, byte [edi + ebp - 1]
test ecx, eax
jne 0x9774ba
lea ecx, [ebp - 4]
shr ecx, 2
je 0x9774b2
xor eax, eax
mov ebx, edi
mov dword [esp + 0x14], ecx
mov esi, dword [ebx]
mov ecx, eax
mov dword [esp], edx
inc eax
shl dword [esp], cl
and cl, 0x1f
xor cl, 0x1f
xor esi, edx
shr edx, cl
mov ecx, dword [esp + 0x14]
or edx, dword [esp]
mov dword [ebx], esi
not esi
add ebx, 4
imul edx, esi
cmp eax, ecx
jne 0x977488
mov eax, dword [esp + 4]
or byte [edi + ebp - 1], al
mov eax, dword [esp + 0xc]
not al
and byte [edi + ebp - 1], al
mov esi, dword [esp + 0x18]
inc esi
cmp esi, 6
jne 0x9773db
mov edi, dword [esp + 8]
xor ebx, ebx
mov eax, 0
test edi, edi
je 0x97750c
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x977690
push 3
push dword [edi + 8]
push 0xbd1568
call fcn.00988e30
add esp, 0xc
test eax, eax
jne 0x977615
mov eax, 0xb6b908
mov ecx, 0x9784c0
mov dword [esp + 8], eax
imul ecx, ecx
and ecx, 3
mov dword [esp + 0x10], ecx
xor eax, eax
cmp dword [esp + 0x10], 1
mov esi, dword [ebx*4 + 0xb6bf80]
mov ebp, dword [ebx*4 + 0xb6bfb0]
mov dword [esp + 0x18], ebx
seta al
mov ecx, eax
xor ecx, 0x3597519
lea edx, [ecx + eax*2 + 0x548]
mov eax, 1
xor edx, dword [ebx*4 + str.vFle_]
mov ebx, 1
mov ecx, edx
and cl, 7
shl eax, cl
movzx edi, cl
xor cl, 7
shl ebx, cl
movzx ecx, byte [esi + ebp - 1]
bt ecx, edi
jb 0x9775fb
mov dword [esp + 4], eax
mov al, byte [esi + ebp - 1]
mov ecx, eax
or cl, bl
lock cmpxchg byte [esi + ebp - 1], cl
jne 0x977580
mov ecx, dword [esp + 4]
movzx eax, al
test ebx, eax
je 0x9775a2
movzx eax, byte [esi + ebp - 1]
test ecx, eax
je 0x977597
jmp 0x9775fb
mov dword [esp + 0xc], ebx
movzx eax, byte [esi + ebp - 1]
test ecx, eax
jne 0x9775f1
lea ecx, [ebp - 4]
shr ecx, 2
je 0x9775e9
xor eax, eax
mov ebx, esi
mov dword [esp + 0x14], ecx
mov edi, dword [ebx]
mov ecx, eax
mov dword [esp], edx
inc eax
shl dword [esp], cl
and cl, 0x1f
xor cl, 0x1f
xor edi, edx
shr edx, cl
mov ecx, dword [esp + 0x14]
or edx, dword [esp]
mov dword [ebx], edi
not edi
add ebx, 4
imul edx, edi
cmp eax, ecx
jne 0x9775bf
mov eax, dword [esp + 4]
or byte [esi + ebp - 1], al
mov eax, dword [esp + 0xc]
not al
and byte [esi + ebp - 1], al
mov ebx, dword [esp + 0x18]
inc ebx
cmp ebx, 0xc
jne 0x97751f
mov eax, dword [esp + 8]
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x977690
push 3
push dword [edi + 8]
push 0xbd15b8
call fcn.00988e30
add esp, 0xc
test eax, eax
jne 0x97763d
mov eax, 0xb6b91c
jmp 0x97750c
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x977690
push 3
push dword [edi + 8]
push 0xbd15f4
call fcn.00988e30
add esp, 0xc
test eax, eax
jne 0x977665
mov eax, 0xb6b930
jmp 0x97750c
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x977690
push 3
push dword [edi + 8]
push 0xbd1638
call fcn.00988e30
add esp, 0xc
test eax, eax
jne 0x97768d
mov eax, 0xb6b944
jmp 0x97750c
mov eax, dword [edi + 4]
cmp eax, 9
jne 0x9776b8
push 9
push dword [edi + 8]
push 0xbd1688
call fcn.00988e30
add esp, 0xc
test eax, eax
jne 0x9776b5
mov eax, 0xb6b958
jmp 0x97750c
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x9776dd
push 3
push dword [edi + 8]
push 0xbd16e0
call fcn.00988e30
add esp, 0xc
test eax, eax
jne 0x9776dd
mov eax, 0xb6b96c
jmp 0x97750c
xor eax, eax
jmp 0x97750c