Function at 0x4293c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov ecx, dword [eax + 8]
cmp ecx, 5
jl 0x429524
cmp ecx, 0x11
jg 0x429524
mov ecx, dword [ebp + 0x10]
test byte [ecx + 0x120], 2
je 0x429450
mov ecx, dword [ebp + 0xc]
mov edi, dword [eax]
cmp ecx, 1
jne 0x429402
mov eax, dword [ebp + 0x14]
mov dl, byte [edi]
mov byte [eax], dl
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
test eax, eax
jle 0x4295eb
mov ebx, dword [ebp + 0x14]
lea esi, [edi + ecx]
mov dword [ebp + 0x14], eax
lea edx, [ebx + ecx]
sub edx, esi
sub ebx, edi
mov dword [ebp + 0xc], ebx
mov cl, byte [edi]
mov al, byte [esi - 1]
xor al, cl
mov bl, al
xor bl, cl
mov ecx, dword [ebp + 0xc]
mov byte [ecx + edi], bl
mov cl, byte [esi - 1]
xor al, cl
inc edi
mov byte [edx + esi - 1], al
mov eax, dword [ebp + 0x14]
dec esi
dec eax
mov dword [ebp + 0x14], eax
jne 0x429424
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret
mov ecx, dword [ebp + 0xc]
lea edx, [ecx - 1]
cmp edx, 7
ja case.0x42945f.3
jmp dword [edx*4 + 0x4295f4]
mov edx, dword [eax]
mov ecx, dword [ebp + 0x14]
mov al, byte [edx]
mov byte [ecx], al
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret
mov edx, dword [eax]
push edx
call fcn.00429620
add esp, 4
push eax
mov eax, dword [ebp + 0x14]
push eax
call fcn.00429720
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret
mov eax, dword [eax]
test al, 3
jne 0x42949f
mov eax, dword [eax]
jmp 0x4294a8
push eax
call fcn.00429670
add esp, 4
mov ecx, dword [ebp + 0x14]
test cl, 3
jne 0x4294b9
mov dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret
push eax
push ecx
call fcn.00429790
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret
mov eax, dword [eax]
test al, 3
jne 0x4294d7
mov esi, dword [eax]
mov eax, dword [eax + 4]
jmp 0x4294e4
push eax
call fcn.004296c0
mov esi, eax
add esp, 4
mov eax, edx
mov ecx, dword [ebp + 0x14]
test cl, 3
jne 0x4294f8
mov dword [ecx], esi
mov dword [ecx + 4], eax
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret
push eax
push esi
push ecx
call fcn.004297f0
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret
mov esi, dword [eax]
mov edi, dword [ebp + 0x14]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
xor eax, eax
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebx
pop ebp
ret
cmp ecx, 0x19
jl 0x42952e
cmp ecx, 0x1f
jle 0x429540
cmp ecx, 0x28
jl 0x4295eb
cmp ecx, 0x30
jg 0x4295eb
mov edx, dword [ecx*4 + 0x45fffc]
mov ecx, dword [ebp + 0x10]
cmp edx, 0xffffffff
movsx edi, byte [ecx + 0x114]
jne 0x429560
mov eax, 0x4000005f
pop edi
pop esi
pop ebx
pop ebp
ret
mov ecx, dword [eax]
lea eax, [edi + edi*2]
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0xc]
lea edx, [edx + eax*2]
mov eax, dword [edx*4 + 0x460138]
test eax, eax
je 0x429591
push ebx
push 0
push ecx
call eax
add esp, 0xc
cmp eax, 1
je 0x4295ab
mov eax, 0x4000005f
pop edi
pop esi
pop ebx
pop ebp
ret
cmp esi, 4
jne 0x42959c
mov eax, dword [ecx]
mov dword [ebx], eax
jmp 0x4295ab
cmp esi, 8
jne 0x4295ab
mov edx, dword [ecx]
mov dword [ebx], edx
mov eax, dword [ecx + 4]
mov dword [ebx + 4], eax
mov ecx, dword [ebp + 0x10]
test byte [ecx + 0x120], 2
je 0x4295eb
test edi, edi
jne 0x4295eb
mov eax, esi
cdq
sub eax, edx
sar eax, 1
test eax, eax
mov dword [ebp + 0x14], eax
jle 0x4295eb
add esi, ebx
mov dl, byte [edi + ebx]
mov cl, byte [esi - 1]
xor cl, dl
mov al, cl
xor al, dl
mov byte [edi + ebx], al
mov al, byte [esi - 1]
xor al, cl
inc edi
mov byte [esi - 1], al
mov eax, dword [ebp + 0x14]
dec esi
cmp edi, eax
jl 0x4295cb
pop edi
pop esi
xor eax, eax
pop ebx
pop ebp
ret