Function at 0x96d830
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, 0x96f930
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 + 0xb638c0]
mov ebp, dword [esi*4 + str._f_f_f_f]
mov dword [esp + 0x18], esi
add ecx, 0x96f930
sete al
mov ecx, eax
not ecx
and ecx, 0x387
lea edx, [eax + ecx*2 + 0x75d92c28]
mov eax, 1
xor edx, dword [esi*4 + 0xb63900]
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 0x96d934
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 0x96d8b9
mov ecx, dword [esp + 4]
movzx eax, al
test ebx, eax
je 0x96d8db
movzx eax, byte [edi + ebp - 1]
test ecx, eax
je 0x96d8d0
jmp 0x96d934
mov dword [esp + 0xc], ebx
movzx eax, byte [edi + ebp - 1]
test ecx, eax
jne 0x96d92a
lea ecx, [ebp - 4]
shr ecx, 2
je 0x96d922
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 0x96d8f8
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 0x96d84b
mov edi, dword [esp + 8]
xor ebx, ebx
mov eax, 0
test edi, edi
je 0x96d97c
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x96db00
push 3
push dword [edi + 8]
push 0xbc9c68
call fcn.0097f460
add esp, 0xc
test eax, eax
jne 0x96da85
mov eax, 0xb632a8
mov ecx, 0x96e930
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 + 0xb63920]
mov ebp, dword [ebx*4 + 0xb63950]
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 0x96da6b
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 0x96d9f0
mov ecx, dword [esp + 4]
movzx eax, al
test ebx, eax
je 0x96da12
movzx eax, byte [esi + ebp - 1]
test ecx, eax
je 0x96da07
jmp 0x96da6b
mov dword [esp + 0xc], ebx
movzx eax, byte [esi + ebp - 1]
test ecx, eax
jne 0x96da61
lea ecx, [ebp - 4]
shr ecx, 2
je 0x96da59
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 0x96da2f
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 0x96d98f
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 0x96db00
push 3
push dword [edi + 8]
push 0xbc9cb8
call fcn.0097f460
add esp, 0xc
test eax, eax
jne 0x96daad
mov eax, 0xb632bc
jmp 0x96d97c
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x96db00
push 3
push dword [edi + 8]
push 0xbc9cf4
call fcn.0097f460
add esp, 0xc
test eax, eax
jne 0x96dad5
mov eax, 0xb632d0
jmp 0x96d97c
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x96db00
push 3
push dword [edi + 8]
push 0xbc9d38
call fcn.0097f460
add esp, 0xc
test eax, eax
jne 0x96dafd
mov eax, 0xb632e4
jmp 0x96d97c
mov eax, dword [edi + 4]
cmp eax, 9
jne 0x96db28
push 9
push dword [edi + 8]
push 0xbc9d88
call fcn.0097f460
add esp, 0xc
test eax, eax
jne 0x96db25
mov eax, 0xb632f8
jmp 0x96d97c
mov eax, dword [edi + 4]
cmp eax, 3
jne 0x96db4d
push 3
push dword [edi + 8]
push 0xbc9de0
call fcn.0097f460
add esp, 0xc
test eax, eax
jne 0x96db4d
mov eax, 0xb6330c
jmp 0x96d97c
xor eax, eax
jmp 0x96d97c