Function at 0x5968e0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa0c
mov eax, dword [0x64e0a0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebx + 4]
mov edx, esi
push edi
mov dword [ebp - 0xa0c], ecx
mov dword [ebp - 0xa08], ebx
lea edi, [edx + 2]
lea ecx, [ecx]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x596910
sub edx, edi
sar edx, 1
lea eax, [ebp - 0xa04]
cmp edx, 0x400
jae 0x59693e
push esi
push 0x400
push eax
call fcn.00543349
add esp, 0xc
jmp 0x59695b
push 0x3ff
push esi
push 0x400
push eax
call fcn.00543d6d
add esp, 0x10
xor eax, eax
mov word [ebp - 0x206], ax
cmp dword [ebx + 0x3c], 0xffffffff
je 0x596992
lea ecx, [ebp - 0xa04]
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x596970
sub ecx, edx
sar ecx, 1
lea eax, [ecx + 1]
push eax
lea eax, [ebp - 0xa04]
push eax
call fcn.00543862
add esp, 8
lea ecx, [ebp - 0xa04]
lea edx, [ecx + 2]
jmp 0x5969a0
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x5969a0
mov ebx, dword [ebx]
sub ecx, edx
mov esi, ebx
sar ecx, 1
lea edx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x5969b6
sub esi, edx
sar esi, 1
or edx, 0xffffffff
xor edi, edi
test ecx, ecx
je 0x5969ee
mov edi, edi
movzx eax, byte [ebp + edi - 0xa04]
xor eax, edx
and eax, 0xff
shr edx, 8
xor edx, dword [eax*4 + 0x611168]
inc edi
cmp edi, ecx
jb 0x5969d0
or ecx, 0xffffffff
xor edi, edi
test esi, esi
je 0x596a1a
jmp 0x596a00
movzx eax, byte [ebx + edi]
xor eax, ecx
and eax, 0xff
shr ecx, 8
xor ecx, dword [eax*4 + 0x611168]
inc edi
cmp edi, esi
jb 0x596a00
not edx
push edx
not ecx
push ecx
push 0x60f3d8
push 0x1000
push dword [ebp - 0xa0c]
call fcn.005c1aa0
mov eax, dword [ebp - 0xa08]
add esp, 0x14
mov ebx, dword [eax + 0x84]
mov dword [ebp - 0xa08], ebx
test ebx, ebx
je 0x596c85
mov edx, dword [ebx + 4]
mov ecx, edx
lea esi, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x596a60
sub ecx, esi
sar ecx, 1
lea eax, [ebp - 0xa04]
cmp ecx, 0x400
jae 0x596a8e
push edx
push 0x400
push eax
call fcn.00543349
add esp, 0xc
jmp 0x596aab
push 0x3ff
push edx
push 0x400
push eax
call fcn.00543d6d
add esp, 0x10
xor eax, eax
mov word [ebp - 0x206], ax
cmp dword [ebx + 0x3c], 0xffffffff
je 0x596ae2
lea ecx, [ebp - 0xa04]
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x596ac0
sub ecx, edx
sar ecx, 1
lea eax, [ecx + 1]
push eax
lea eax, [ebp - 0xa04]
push eax
call fcn.00543862
add esp, 8
lea ecx, [ebp - 0xa04]
lea edx, [ecx + 2]
jmp 0x596af0
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x596af0
mov ebx, dword [ebx]
sub ecx, edx
mov esi, ebx
sar ecx, 1
lea edx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x596b06
sub esi, edx
sar esi, 1
or edx, 0xffffffff
xor edi, edi
test ecx, ecx
je 0x596b3e
mov edi, edi
movzx eax, byte [ebp + edi - 0xa04]
xor eax, edx
and eax, 0xff
shr edx, 8
xor edx, dword [eax*4 + 0x611168]
inc edi
cmp edi, ecx
jb 0x596b20
or ecx, 0xffffffff
xor edi, edi
test esi, esi
je 0x596b6a
jmp 0x596b50
movzx eax, byte [ebx + edi]
xor eax, ecx
and eax, 0xff
shr ecx, 8
xor ecx, dword [eax*4 + 0x611168]
inc edi
cmp edi, esi
jb 0x596b50
not edx
push edx
not ecx
push ecx
push str._08X_08X
lea eax, [ebp - 0x204]
push 0x100
push eax
call fcn.005c1aa0
lea ecx, [ebp - 0x204]
add esp, 0x14
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x596b92
mov ebx, dword [ebp - 0xa0c]
sub ecx, edx
mov edx, ebx
sar ecx, 1
lea esi, [edx + 2]
lea esp, [esp]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x596bb0
sub edx, esi
lea eax, [ecx + 1]
sar edx, 1
cmp eax, 0x100
jae 0x596c15
lea eax, [ecx + 1]
add eax, edx
cmp eax, 0x100
ja 0x596bec
push ebx
lea eax, [ebp - 0x204]
push 0x100
push eax
call fcn.0054640f
add esp, 0xc
jmp 0x596c15
mov eax, 0xff
sub eax, ecx
push eax
mov eax, 0x100
sub eax, ecx
push ebx
push eax
lea eax, [ebp - 0x204]
lea eax, [eax + ecx*2]
push eax
call fcn.00543d6d
add esp, 0x10
xor eax, eax
mov word [ebp - 6], ax
lea ecx, [ebp - 0x204]
lea edx, [ecx + 2]
mov edi, edi
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x596c20
sub ecx, edx
sar ecx, 1
lea eax, [ebp - 0x204]
cmp ecx, 0x1000
jae 0x596c4e
push eax
push 0x1000
push ebx
call fcn.00543349
add esp, 0xc
jmp 0x596c6b
push 0xfff
push eax
push 0x1000
push ebx
call fcn.00543d6d
add esp, 0x10
xor eax, eax
mov word [ebx + 0x1ffe], ax
mov ebx, dword [ebp - 0xa08]
mov ebx, dword [ebx + 0x84]
mov dword [ebp - 0xa08], ebx
test ebx, ebx
jne 0x596a52
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00541b41
mov esp, ebp
pop ebp
ret