Function at 0x57097b
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x78
push ebx
mov ebx, dword [esp + 0x94]
push ebp
push esi
push ebx
call fcn.0056ea83
test eax, eax
jne 0x570c45
push dword [esp + 0x98]
call fcn.00570332
test eax, eax
jne 0x570c45
imul eax, ebx, 0x68
test byte [esp + 0xa0], 7
push edi
mov edi, dword [esp + 0x94]
push 0
mov dword [esp + 0x14], eax
pop ebx
setne bl
mov ecx, dword [eax + 0x76f200]
mov eax, dword [esp + 0xa4]
shr eax, 3
add ebx, eax
mov dword [esp + 0x14], ecx
cmp edi, ebx
ja 0x570c41
lea eax, [edi + 2]
add eax, ecx
cmp ebx, eax
jb 0x570c41
push ebx
call fcn.006362d2
push ebx
mov ebp, eax
call fcn.006362d2
push ebx
mov dword [esp + 0x28], eax
call fcn.006362d2
mov esi, eax
push ebx
mov dword [esp + 0x30], esi
call fcn.006362d2
add esp, 0x10
mov dword [esp + 0x18], eax
test ebp, ebp
je 0x570c14
cmp dword [esp + 0x1c], 0
je 0x570c0d
test esi, esi
je 0x570c0d
test eax, eax
je 0x570c0d
test edi, edi
je 0x570a67
imul eax, dword [esp + 0x9c], 0x28
push dword [esp + 0x98]
push edi
push esi
call dword [eax + 0x76ff0c]
cmp eax, edi
je 0x570a67
push 9
pop esi
jmp 0x570be5
lea eax, [esp + 0x28]
push eax
mov eax, dword [esp + 0x14]
call dword [eax + 0x76f24c]
mov esi, eax
test esi, esi
jne 0x570be5
push 8
push ebp
call fcn.0056e45b
push 8
push ebp
lea eax, [esp + 0x30]
push eax
mov eax, dword [esp + 0x1c]
call dword [eax + 0x76f250]
mov esi, eax
test esi, esi
jne 0x570be5
push dword [esp + 0x90]
lea eax, [esp + 0x2c]
push dword [esp + 0x90]
push eax
mov eax, dword [esp + 0x1c]
call dword [eax + 0x76f250]
mov esi, eax
test esi, esi
jne 0x570be5
push edi
push dword [esp + 0x24]
lea eax, [esp + 0x30]
push eax
mov eax, dword [esp + 0x1c]
call dword [eax + 0x76f250]
mov esi, eax
test esi, esi
jne 0x570be5
push dword [esp + 0x18]
lea eax, [esp + 0x2c]
push eax
mov eax, dword [esp + 0x18]
call dword [eax + 0x76f254]
mov esi, eax
test esi, esi
jne 0x570be5
mov esi, ebx
sub esi, dword [esp + 0x14]
mov eax, esi
sub eax, edi
sub eax, 2
push eax
push 0
push ebp
call fcn.00635a30
mov eax, dword [esp + 0x20]
neg eax
mov dword [esp + 0x30], eax
sub eax, edi
add eax, 0xfffffffe
add eax, ebx
push edi
push dword [esp + 0x30]
mov byte [eax + ebp], 1
inc eax
add eax, ebp
push eax
call fcn.00631810
mov edi, dword [esp + 0x34]
lea eax, [esi - 1]
add esp, 0x18
mov dword [esp + 0x10], eax
push eax
push edi
push dword [esp + 0x1c]
push dword [esp + 0x24]
push dword [esp + 0xb0]
call fcn.005711d6
mov esi, eax
test esi, esi
jne 0x570be5
mov edx, dword [esp + 0x10]
test edx, edx
je 0x570b80
mov ecx, ebp
sub edi, ebp
mov esi, edx
mov al, byte [edi + ecx]
xor byte [ecx], al
inc ecx
dec esi
jne 0x570b77
mov eax, dword [esp + 0xac]
cmp dword [eax], ebx
jae 0x570b90
push 6
pop esi
jmp 0x570be3
mov edi, dword [esp + 0xa8]
push edx
push ebp
push edi
call fcn.00631810
mov esi, dword [esp + 0x30]
push dword [esp + 0x20]
dec esi
push dword [esp + 0x28]
add esi, ebx
lea eax, [esi + edi]
push eax
call fcn.00631810
mov eax, dword [esp + 0x2c]
mov ecx, ebx
add eax, esi
shl ecx, 3
sub ecx, dword [esp + 0xbc]
add esp, 0x18
inc ecx
mov byte [eax + edi], 0xbc
mov eax, 0xff
sar eax, cl
and byte [edi], al
xor esi, esi
mov eax, dword [esp + 0xac]
mov dword [eax], ebx
push dword [esp + 0x18]
call fcn.0063629a
push dword [esp + 0x24]
call fcn.0063629a
push dword [esp + 0x24]
call fcn.0063629a
push ebp
call fcn.0063629a
add esp, 0x10
mov eax, esi
jmp 0x570c44
push ebp
call fcn.0063629a
pop ecx
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x570c23
push eax
call fcn.0063629a
pop ecx
test esi, esi
je 0x570c2e
push esi
call fcn.0063629a
pop ecx
mov eax, dword [esp + 0x18]
test eax, eax
je 0x570c3d
push eax
call fcn.0063629a
pop ecx
push 0xd
jmp 0x570c43
push 0x16
pop eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret 0x24