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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x44
mov eax, dword [0x52406c]
xor eax, esp
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x10]
xor edx, edx
mov ecx, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
mov dword [esp + 0x28], eax
add ecx, esi
push edi
xor edi, edi
mov dword [esp + 0x24], ecx
lea eax, [esi + 2]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x20], edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x28], eax
cmp eax, ecx
ja case.0x435ac5.2
mov cl, byte [esi]
cmp cl, 0x1f
jne 0x435993
cmp byte [esi + 1], 0x8b
jne 0x435993
mov ecx, dword [esp + 0x24]
mov esi, eax
lea eax, [esi + 8]
cmp eax, ecx
ja case.0x435ac5.2
cmp byte [esi], 8
jne case.0x435ac5.2
mov al, byte [esi + 1]
add esi, 8
mov byte [esp + 0x17], al
mov dword [ebp + 8], esi
test al, 2
je 0x43591d
add esi, 2
mov dword [ebp + 8], esi
cmp esi, ecx
ja case.0x435ac5.2
test al, 4
je 0x435953
lea eax, [esi + 2]
mov dword [esp + 0x28], eax
cmp eax, ecx
ja case.0x435ac5.2
mov al, byte [esi]
movzx esi, byte [esi + 1]
shl esi, 8
movzx eax, al
or esi, eax
mov eax, dword [esp + 0x28]
add esi, eax
mov dword [ebp + 8], esi
cmp esi, ecx
ja case.0x435ac5.2
mov al, byte [esp + 0x17]
test al, 8
je 0x435968
cmp esi, ecx
jae case.0x435ac5.2
inc esi
mov dword [ebp + 8], esi
cmp byte [esi - 1], dl
jne 0x435957
test al, 0x10
je 0x435981
nop dword [eax]
cmp esi, ecx
jae case.0x435ac5.2
inc esi
mov dword [ebp + 8], esi
cmp byte [esi - 1], dl
jne 0x435970
test al, 0x20
jne case.0x435ac5.2
mov dword [esp + 0x34], 1
jmp 0x4359f0
mov al, cl
and al, 0xf
cmp al, 8
jne 0x4359f0
mov al, cl
and al, 0xf0
cmp al, 0x70
ja 0x4359db
mov bl, byte [esi + 1]
movzx eax, cl
shl eax, 8
movzx ecx, bl
or eax, ecx
mov ecx, 0x1f
cdq
idiv ecx
test edx, edx
jne 0x4359d9
mov esi, dword [esp + 0x28]
mov dword [ebp + 8], esi
test bl, 0x20
je 0x4359d9
add esi, 4
mov dword [ebp + 8], esi
cmp esi, dword [esp + 0x24]
ja case.0x435ac5.2
xor edx, edx
mov dword [esp + 0x34], 2
mov ebx, 1
nop dword [eax + eax]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x40], esi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], esi
mov dword [esp + 0x10], edi
cmp edi, 1
jge 0x435a4b
cmp esi, ecx
jae 0x435acc
movzx eax, byte [esi]
mov ecx, edi
shl eax, cl
inc esi
mov ecx, dword [esp + 0x1c]
or eax, edx
add edi, 8
mov dword [ebp + 8], esi
mov dword [esp + 0x40], esi
mov edx, eax
cmp esi, ecx
jae 0x435a4b
movzx edx, byte [esi]
mov ecx, edi
shl edx, cl
inc esi
mov ecx, dword [esp + 0x1c]
or edx, eax
mov dword [ebp + 8], esi
add edi, 8
mov dword [esp + 0x40], esi
mov eax, edx
shr edx, 1
and eax, 1
mov dword [esp + 0x20], edx
dec edi
mov dword [esp + 0x28], eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], edi
cmp edi, 2
jge case.default.0x435ac5
cmp esi, ecx
jae 0x435bbe
movzx eax, byte [esi]
mov ecx, edi
shl eax, cl
inc esi
mov ecx, dword [esp + 0x1c]
or eax, edx
add edi, 8
mov dword [ebp + 8], esi
mov dword [esp + 0x40], esi
mov edx, eax
cmp esi, ecx
jae case.default.0x435ac5
movzx edx, byte [esi]
mov ecx, edi
shl edx, cl
inc esi
mov ecx, dword [esp + 0x1c]
or edx, eax
mov dword [ebp + 8], esi
add edi, 8
mov dword [esp + 0x40], esi
mov eax, edx
shr edx, 2
and eax, 3
mov dword [esp + 0x20], edx
add edi, 0xfffffffe
mov dword [esp + 0x3c], edx
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], edi
jmp dword [eax*4 + 0x435d5c]
mov dword [esp + 0x28], 0xffffffff
jmp 0x435a67
cmp edi, 8
jl 0x435af1
mov eax, dword [esp + 0x48]
nop
dec esi
sub edi, 8
cmp esi, eax
jb case.0x435ac5.2
cmp edi, 8
jge 0x435ae0
xor eax, eax
xor edi, edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x3c], eax
lea eax, [esi + 4]
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], edi
cmp eax, ecx
ja case.0x435ac5.2
movzx eax, byte [esi]
mov ecx, eax
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 2]
movzx edx, cx
lea ecx, [esi + 4]
mov dword [esp + 0x30], ecx
movzx ecx, byte [esi + 3]
shl ecx, 8
or ecx, eax
mov dword [esp + 0xc], edx
not ecx
movzx eax, cx
cmp edx, eax
jne case.0x435ac5.2
mov eax, dword [ebp + 0x14]
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp edx, eax
ja case.0x435ac5.2
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
add eax, ecx
push edx
push esi
push eax
call fcn.004ba910
mov edx, dword [esp + 0x18]
add esp, 0xc
add esi, edx
mov dword [ebp + 8], esi
mov dword [esp + 0x40], esi
jmp 0x435bc2
xor edx, edx
jmp 0x435b80
mov edx, 1
mov ecx, dword [esp + 0x10]
mov eax, dword [ebp + 0x14]
sub eax, ecx
push eax
push ecx
push dword [esp + 0x34]
lea ecx, [esp + 0x44]
call fcn.00435040
mov edi, dword [esp + 0x44]
add esp, 0xc
mov esi, dword [esp + 0x40]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], eax
mov dword [ebp + 8], esi
mov edx, dword [esp + 0xc]
cmp edx, 0xffffffff
je case.0x435ac5.2
mov eax, dword [esp + 0x34]
sub eax, 1
je 0x435bfa
sub eax, 1
jne 0x435c96
mov eax, dword [esp + 0x10]
mov ecx, ebx
push edx
mov edx, dword [esp + 0x30]
lea edx, [edx + eax]
call fcn.00401850
add esp, 4
mov ebx, eax
jmp 0x435c96
mov eax, dword [esp + 0x10]
not ebx
add eax, dword [esp + 0x2c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x435c6e
mov edi, dword [esp + 0x30]
mov esi, eax
shr esi, 2
nop word [eax + eax]
mov ecx, dword [edi]
sub edx, 4
xor ecx, ebx
add edi, 4
mov eax, ecx
shr eax, 0x10
movzx ebx, al
mov eax, ecx
shr eax, 8
movzx eax, al
mov ebx, dword [ebx*4 + 0x503e30]
xor ebx, dword [eax*4 + 0x504230]
mov eax, ecx
shr eax, 0x18
xor ebx, dword [eax*4 + 0x503a30]
movzx eax, cl
xor ebx, dword [eax*4 + 0x504630]
sub esi, 1
jne 0x435c20
mov esi, dword [ebp + 8]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x18]
test edx, edx
je 0x435c94
mov edi, dword [esp + 0x30]
movzx eax, byte [edi]
lea edi, [edi + 1]
movzx ecx, bl
xor ecx, eax
shr ebx, 8
xor ebx, dword [ecx*4 + 0x503a30]
sub edx, 1
jne 0x435c76
mov edi, dword [esp + 0x18]
not ebx
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0xc]
cmp dword [esp + 0x28], 0
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
je 0x435a08
lea ecx, [esp + 0x38]
call fcn.00433070
mov eax, dword [esp + 0x34]
sub eax, 1
je 0x435d12
sub eax, 1
jne 0x435d41
mov edx, dword [esp + 0x40]
lea eax, [edx + 4]
cmp eax, dword [esp + 0x24]
ja case.0x435ac5.2
movzx eax, byte [edx]
movzx ecx, byte [edx + 1]
shl eax, 8
or ecx, eax
movzx eax, byte [edx + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 3]
shl ecx, 8
or ecx, eax
cmp ecx, ebx
je 0x435d41
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x40]
xor ecx, esp
call fcn.0046c93b
mov esp, ebp
pop ebp
ret 0x14
mov esi, dword [esp + 0x40]
lea eax, [esi + 4]
cmp eax, dword [esp + 0x24]
ja case.0x435ac5.2
movzx edx, byte [esi + 3]
movzx eax, byte [esi + 2]
movzx ecx, byte [esi + 1]
shl edx, 8
or edx, eax
shl edx, 8
or edx, ecx
movzx ecx, byte [esi]
shl edx, 8
or edx, ecx
cmp edx, ebx
jne case.0x435ac5.2
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0046c93b
mov esp, ebp
pop ebp
ret 0x14