Function at 0x56efe4
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0x20]
sub esp, 0x78
and dword [eax], 0
push ebx
mov ebx, dword [esp + 0x94]
push ebp
push esi
push edi
push ebx
call fcn.0056ea83
test eax, eax
jne 0x56f2a5
imul eax, ebx, 0x68
test byte [esp + 0xa4], 7
push 0
pop ebx
setne bl
mov dword [esp + 0x14], eax
mov ecx, dword [eax + 0x76f200]
mov eax, dword [esp + 0xa4]
shr eax, 3
add ebx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x9c]
cmp eax, ebx
ja 0x56f2a2
add eax, 2
add eax, ecx
cmp ebx, eax
jb 0x56f2a2
cmp dword [esp + 0x98], ebx
jne 0x56f2a2
push ebx
call fcn.006362d2
push ebx
mov ebp, eax
call fcn.006362d2
push ebx
mov edi, eax
call fcn.006362d2
push ebx
mov dword [esp + 0x2c], eax
call fcn.006362d2
add esp, 0x10
mov esi, eax
mov dword [esp + 0x10], esi
test ebp, ebp
je 0x56f279
test edi, edi
je 0x56f272
cmp dword [esp + 0x1c], 0
je 0x56f272
test esi, esi
je 0x56f272
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x94]
cmp byte [ecx + eax - 1], 0xbc
je 0x56f0e8
push 7
pop esi
mov ebx, dword [esp + 0x10]
push ebx
call fcn.0063629a
push dword [esp + 0x20]
call fcn.0063629a
push edi
call fcn.0063629a
push ebp
call fcn.0063629a
add esp, 0x10
mov eax, esi
jmp 0x56f2a5
mov eax, ebx
sub eax, dword [esp + 0x18]
mov dword [esp + 0x20], eax
dec eax
push eax
push ecx
push ebp
call fcn.00631810
mov ecx, dword [esp + 0x24]
mov eax, ebx
push ecx
sub eax, ecx
mov ecx, dword [esp + 0xa4]
dec ecx
add eax, ecx
push eax
push esi
call fcn.00631810
mov ecx, ebx
add esp, 0x18
shl ecx, 3
mov eax, 0xff
sub ecx, dword [esp + 0xa4]
inc ecx
sar eax, cl
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x24], eax
not eax
test byte [ecx], al
jne 0x56f0bc
mov ebx, dword [esp + 0x20]
dec ebx
push ebx
push edi
push dword [esp + 0x20]
push esi
push dword [esp + 0xb0]
call fcn.005711d6
mov esi, eax
test esi, esi
jne 0x56f0bf
test ebx, ebx
je 0x56f176
mov edx, edi
mov ecx, ebp
sub edx, ebp
mov al, byte [edx + ecx]
xor byte [ecx], al
inc ecx
dec ebx
jne 0x56f16d
mov eax, dword [esp + 0x24]
xor ebx, ebx
and byte [ebp], al
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x9c]
add eax, 0xfffffffe
je 0x56f19e
cmp byte [ebx + ebp], 0
jne 0x56f0bc
inc ebx
cmp ebx, eax
jb 0x56f18f
cmp byte [ebx + ebp], 1
jne 0x56f0bc
lea eax, [esp + 0x28]
push eax
mov eax, dword [esp + 0x18]
call dword [eax + 0x76f24c]
mov esi, eax
test esi, esi
jne 0x56f0bf
push 8
push edi
call fcn.0056e45b
push 8
push edi
lea eax, [esp + 0x30]
push eax
mov eax, dword [esp + 0x20]
call dword [eax + 0x76f250]
mov esi, eax
test esi, esi
jne 0x56f0bf
push dword [esp + 0x90]
lea eax, [esp + 0x2c]
push dword [esp + 0x90]
push eax
mov eax, dword [esp + 0x20]
call dword [eax + 0x76f250]
mov esi, eax
test esi, esi
jne 0x56f0bf
push dword [esp + 0x9c]
lea eax, [ebp + 1]
add eax, ebx
mov ebx, dword [esp + 0x18]
push eax
lea eax, [esp + 0x30]
push eax
call dword [ebx + 0x76f250]
mov esi, eax
test esi, esi
jne 0x56f0bf
push edi
lea eax, [esp + 0x2c]
push eax
call dword [ebx + 0x76f254]
mov ebx, dword [esp + 0x10]
mov esi, eax
test esi, esi
jne 0x56f0c3
push dword [esp + 0x18]
push ebx
push edi
call fcn.006342b2
add esp, 0xc
test eax, eax
jne 0x56f26b
mov eax, dword [esp + 0xa8]
mov dword [eax], 1
xor esi, esi
jmp 0x56f0c3
push ebp
call fcn.0063629a
pop ecx
test edi, edi
je 0x56f284
push edi
call fcn.0063629a
pop ecx
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x56f293
push eax
call fcn.0063629a
pop ecx
test esi, esi
je 0x56f29e
push esi
call fcn.0063629a
pop ecx
push 0xd
jmp 0x56f2a4
push 0x16
pop eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret 0x20