Function at 0x423df0
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 4]
test edx, edx
jne 0x423dfd
xor eax, eax
ret 8
push ebx
push esi
push edi
mov edi, dword [esp + 0x14]
or eax, 0xffffffff
test edi, edi
je 0x423e2a
test dl, 3
je 0x423e2a
mov esi, eax
xor ebx, ebx
mov bl, byte [edx]
and esi, 0xff
xor esi, ebx
shr eax, 8
mov esi, dword [ecx + esi*4]
xor eax, esi
inc edx
dec edi
jne 0x423e0b
cmp edi, 0x20
push ebp
mov esi, edx
jb 0x42401b
mov ebp, edi
shr ebp, 5
mov ebx, dword [esi]
xor edx, edx
xor eax, ebx
xor ebx, ebx
mov dl, ah
mov dword [esp + 0x14], eax
mov bl, byte [esp + 0x16]
add esi, 4
mov edx, dword [ecx + edx*4 + 0x800]
add esi, 4
xor edx, dword [ecx + ebx*4 + 0x400]
mov ebx, eax
and ebx, 0xff
add esi, 4
shr eax, 0x18
xor edx, dword [ecx + ebx*4 + 0xc00]
add esi, 4
mov ebx, dword [ecx + eax*4]
xor eax, eax
xor edx, ebx
mov ebx, dword [esi - 0xc]
xor edx, ebx
xor ebx, ebx
mov dword [esp + 0x14], edx
mov al, dh
mov bl, byte [esp + 0x16]
add esi, 4
mov eax, dword [ecx + eax*4 + 0x800]
xor eax, dword [ecx + ebx*4 + 0x400]
mov ebx, edx
and ebx, 0xff
shr edx, 0x18
xor eax, dword [ecx + ebx*4 + 0xc00]
mov ebx, dword [ecx + edx*4]
xor edx, edx
xor eax, ebx
mov ebx, dword [esi - 0xc]
xor eax, ebx
xor ebx, ebx
mov dword [esp + 0x14], eax
mov dl, ah
mov bl, byte [esp + 0x16]
mov edx, dword [ecx + edx*4 + 0x800]
xor edx, dword [ecx + ebx*4 + 0x400]
mov ebx, eax
and ebx, 0xff
shr eax, 0x18
xor edx, dword [ecx + ebx*4 + 0xc00]
mov ebx, dword [ecx + eax*4]
xor eax, eax
xor edx, ebx
mov ebx, dword [esi - 8]
xor edx, ebx
xor ebx, ebx
mov dword [esp + 0x14], edx
mov al, dh
mov bl, byte [esp + 0x16]
mov eax, dword [ecx + eax*4 + 0x800]
xor eax, dword [ecx + ebx*4 + 0x400]
mov ebx, edx
and ebx, 0xff
shr edx, 0x18
xor eax, dword [ecx + ebx*4 + 0xc00]
mov ebx, dword [ecx + edx*4]
xor edx, edx
xor eax, ebx
mov ebx, dword [esi - 4]
xor eax, ebx
xor ebx, ebx
mov dword [esp + 0x14], eax
mov dl, ah
mov bl, byte [esp + 0x16]
mov edx, dword [ecx + edx*4 + 0x800]
xor edx, dword [ecx + ebx*4 + 0x400]
mov ebx, eax
and ebx, 0xff
shr eax, 0x18
xor edx, dword [ecx + ebx*4 + 0xc00]
mov ebx, dword [ecx + eax*4]
xor edx, ebx
mov ebx, dword [esi]
xor edx, ebx
xor eax, eax
mov dword [esp + 0x14], edx
mov al, dh
xor ebx, ebx
add esi, 4
mov bl, byte [esp + 0x16]
mov eax, dword [ecx + eax*4 + 0x800]
add esi, 4
sub edi, 0x20
xor eax, dword [ecx + ebx*4 + 0x400]
mov ebx, edx
and ebx, 0xff
add esi, 4
shr edx, 0x18
xor eax, dword [ecx + ebx*4 + 0xc00]
mov ebx, dword [ecx + edx*4]
xor edx, edx
xor eax, ebx
mov ebx, dword [esi - 8]
xor eax, ebx
xor ebx, ebx
mov dword [esp + 0x14], eax
mov dl, ah
mov bl, byte [esp + 0x16]
mov edx, dword [ecx + edx*4 + 0x800]
xor edx, dword [ecx + ebx*4 + 0x400]
mov ebx, eax
and ebx, 0xff
shr eax, 0x18
xor edx, dword [ecx + ebx*4 + 0xc00]
mov ebx, dword [ecx + eax*4]
xor eax, eax
xor edx, ebx
mov ebx, dword [esi - 4]
xor edx, ebx
xor ebx, ebx
mov dword [esp + 0x14], edx
mov al, dh
mov bl, byte [esp + 0x16]
mov eax, dword [ecx + eax*4 + 0x800]
xor eax, dword [ecx + ebx*4 + 0x400]
mov ebx, edx
and ebx, 0xff
shr edx, 0x18
xor eax, dword [ecx + ebx*4 + 0xc00]
mov ebx, dword [ecx + edx*4]
xor eax, ebx
dec ebp
jne 0x423e3b
cmp edi, 4
jb 0x424067
mov ebp, edi
shr ebp, 2
mov ebx, dword [esi]
xor edx, edx
xor eax, ebx
xor ebx, ebx
mov dword [esp + 0x14], eax
mov dl, ah
mov bl, byte [esp + 0x16]
add esi, 4
mov edx, dword [ecx + edx*4 + 0x800]
sub edi, 4
xor edx, dword [ecx + ebx*4 + 0x400]
mov ebx, eax
and ebx, 0xff
shr eax, 0x18
xor edx, dword [ecx + ebx*4 + 0xc00]
mov ebx, dword [ecx + eax*4]
xor edx, ebx
dec ebp
mov eax, edx
jne 0x424025
test edi, edi
pop ebp
je 0x424086
mov edx, eax
xor ebx, ebx
mov bl, byte [esi]
and edx, 0xff
xor edx, ebx
shr eax, 8
mov edx, dword [ecx + edx*4]
xor eax, edx
inc esi
dec edi
jne 0x42406c
pop edi
pop esi
not eax
pop ebx
ret 8