Function at 0x5e9b80
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
push eax
mov eax, dword [esp + 0x2c]
mov esi, dword [eax]
test esi, esi
js 0x5e9cd5
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
setne dl
test eax, eax
setne cl
and cl, dl
cmp dword [esp + 0x30], 0
je 0x5e9cdf
test cl, cl
je 0x5e9e1e
nop dword [eax]
mov edx, dword [esp + 0x28]
movzx ecx, byte [edx + esi]
xor cl, byte [ebp]
inc ebp
mov byte [edx + esi], cl
mov byte [ebx], cl
inc ebx
lea edx, [eax - 1]
inc esi
and esi, 0xf
je 0x5e9be2
cmp eax, 1
mov eax, edx
jne 0x5e9bc0
cmp edx, 0x10
jb 0x5e9e29
mov dword [esp], edx
push dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
push eax
push eax
call dword [esp + 0x40]
add esp, 0xc
cmp esi, 0xf
ja 0x5e9c54
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + esi]
xor eax, dword [ebp + esi]
mov dword [ecx + esi], eax
mov dword [ebx + esi], eax
cmp esi, 0xb
ja 0x5e9c54
mov eax, dword [ecx + esi + 4]
xor eax, dword [ebp + esi + 4]
mov dword [ecx + esi + 4], eax
mov dword [ebx + esi + 4], eax
cmp esi, 7
ja 0x5e9c54
mov eax, dword [ecx + esi + 8]
xor eax, dword [ebp + esi + 8]
mov dword [ecx + esi + 8], eax
mov dword [ebx + esi + 8], eax
cmp esi, 3
ja 0x5e9c54
mov eax, dword [ecx + esi + 0xc]
xor eax, dword [ebp + esi + 0xc]
mov dword [ecx + esi + 0xc], eax
mov dword [ebx + esi + 0xc], eax
mov edx, dword [esp]
add edx, 0xfffffff0
add ebx, 0x10
add ebp, 0x10
xor esi, esi
cmp edx, 0x10
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
jb 0x5e9cc8
nop
mov dword [esp], edx
push ecx
mov edi, dword [esp + 0x2c]
push edi
push edi
call dword [esp + 0x40]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
add esp, 0xc
mov eax, dword [edi]
xor eax, dword [ebp]
mov dword [edi], eax
mov dword [ebx], eax
mov eax, dword [edi + 4]
xor eax, dword [ebp + 4]
mov dword [edi + 4], eax
mov dword [ebx + 4], eax
mov eax, dword [edi + 8]
xor eax, dword [ebp + 8]
mov dword [edi + 8], eax
mov dword [ebx + 8], eax
mov eax, dword [edi + 0xc]
xor eax, dword [ebp + 0xc]
mov dword [edi + 0xc], eax
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x34]
add edx, 0xfffffff0
add ebx, 0x10
add ebp, 0x10
cmp edx, 0xf
ja 0x5e9c70
test edx, edx
jne 0x5e9e39
jmp 0x5e9eeb
mov eax, 0xffffffff
jmp 0x5e9f52
test cl, cl
je 0x5e9eb2
nop word [eax + eax]
movzx ecx, byte [ebp]
inc ebp
mov edi, dword [esp + 0x28]
movzx edx, byte [edi + esi]
xor dl, cl
mov byte [ebx], dl
inc ebx
mov byte [edi + esi], cl
lea edx, [eax - 1]
inc esi
and esi, 0xf
je 0x5e9d15
cmp eax, 1
mov eax, edx
jne 0x5e9cf0
cmp edx, 0x10
jb 0x5e9ebd
mov dword [esp], edx
push dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
push eax
push eax
call dword [esp + 0x40]
add esp, 0xc
cmp esi, 0xf
ja 0x5e9d8f
mov eax, dword [ebp + esi]
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + esi]
xor ecx, eax
mov dword [ebx + esi], ecx
mov dword [edx + esi], eax
cmp esi, 0xb
ja 0x5e9d8f
mov eax, dword [ebp + esi + 4]
mov ecx, dword [edx + esi + 4]
xor ecx, eax
mov dword [ebx + esi + 4], ecx
mov dword [edx + esi + 4], eax
cmp esi, 7
ja 0x5e9d8f
mov eax, dword [ebp + esi + 8]
mov ecx, dword [edx + esi + 8]
xor ecx, eax
mov dword [ebx + esi + 8], ecx
mov dword [edx + esi + 8], eax
cmp esi, 3
ja 0x5e9d8f
mov eax, dword [ebp + esi + 0xc]
mov ecx, dword [edx + esi + 0xc]
xor ecx, eax
mov dword [ebx + esi + 0xc], ecx
mov dword [edx + esi + 0xc], eax
mov edx, dword [esp]
add edx, 0xfffffff0
add ebx, 0x10
add ebp, 0x10
xor esi, esi
cmp edx, 0x10
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
jb 0x5e9e11
nop word [eax + eax]
push ecx
mov eax, dword [esp + 0x2c]
push eax
push eax
mov edi, edx
call dword [esp + 0x40]
mov edx, edi
mov edi, dword [esp + 0x34]
add esp, 0xc
mov eax, dword [ebp]
mov ecx, dword [edi]
xor ecx, eax
mov dword [ebx], ecx
mov dword [edi], eax
mov eax, dword [ebp + 4]
mov ecx, dword [edi + 4]
xor ecx, eax
mov dword [ebx + 4], ecx
mov dword [edi + 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [edi + 8]
xor ecx, eax
mov dword [ebx + 8], ecx
mov dword [edi + 8], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [edi + 0xc]
xor ecx, eax
mov dword [ebx + 0xc], ecx
mov ecx, dword [esp + 0x24]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x34]
add edx, 0xfffffff0
add ebx, 0x10
add ebp, 0x10
cmp edx, 0xf
ja 0x5e9db0
test edx, edx
jne 0x5e9ec9
jmp 0x5e9eeb
mov edx, eax
cmp edx, 0x10
jae 0x5e9beb
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
test edx, edx
je 0x5e9eeb
push ecx
mov ecx, dword [esp + 0x2c]
push ecx
push ecx
mov edi, edx
call eax
mov edx, edi
add esp, 0xc
test dl, 1
jne 0x5e9e5a
mov ecx, edx
cmp edx, 1
jne 0x5e9e80
jmp 0x5e9f52
lea ecx, [edx - 1]
mov edi, dword [esp + 0x28]
movzx eax, byte [edi + esi]
xor al, byte [ebp + esi]
mov byte [edi + esi], al
mov byte [ebx + esi], al
inc esi
mov eax, esi
cmp edx, 1
je 0x5e9f52
nop dword [eax + eax]
mov edi, dword [esp + 0x28]
movzx eax, byte [edi + esi]
xor al, byte [ebp + esi]
mov byte [edi + esi], al
mov byte [ebx + esi], al
movzx edx, byte [edi + esi + 1]
xor dl, byte [ebp + esi + 1]
lea eax, [esi + 2]
mov byte [edi + esi + 1], dl
mov byte [ebx + esi + 1], dl
mov esi, eax
add ecx, 0xfffffffe
jne 0x5e9e80
jmp 0x5e9f52
mov edx, eax
cmp edx, 0x10
jae 0x5e9d1e
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
test edx, edx
je 0x5e9eeb
push ecx
mov ecx, dword [esp + 0x2c]
push ecx
push ecx
mov dword [esp + 0xc], edx
call eax
mov edx, dword [esp + 0xc]
add esp, 0xc
test dl, 1
jne 0x5e9eef
mov ecx, edx
cmp edx, 1
jne 0x5e9f20
jmp 0x5e9f52
mov eax, esi
jmp 0x5e9f52
lea ecx, [edx - 1]
movzx eax, byte [ebp + esi]
mov edi, dword [esp + 0x28]
movzx edx, byte [edi + esi]
xor dl, al
mov byte [ebx + esi], dl
mov edx, dword [esp]
mov byte [edi + esi], al
inc esi
mov eax, esi
cmp edx, 1
je 0x5e9f52
nop word cs:[eax + eax]
movzx eax, byte [ebp + esi]
mov edi, dword [esp + 0x28]
movzx edx, byte [edi + esi]
xor dl, al
mov byte [ebx + esi], dl
mov byte [edi + esi], al
movzx edx, byte [ebp + esi + 1]
mov dh, byte [edi + esi + 1]
xor dh, dl
lea eax, [esi + 2]
mov byte [ebx + esi + 1], dh
mov byte [edi + esi + 1], dl
mov esi, eax
add ecx, 0xfffffffe
jne 0x5e9f20
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret