Function at 0x423900
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 4]
sub esp, 0x24
test ecx, ecx
push ebp
je 0x423c58
mov ebp, dword [esp + 0x30]
test ebp, ebp
je 0x423c58
cmp byte [ebp], 1
je 0x423c58
push esi
mov esi, dword [esp + 0x38]
test esi, esi
je 0x423c50
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x423c50
cdq
and edx, 0x7f
add eax, edx
push ebx
mov ebx, eax
movzx eax, byte [ecx + 0x14]
sar ebx, 7
dec eax
push edi
mov dword [esp + 0x38], ebx
je 0x423c0f
dec eax
je 0x423b56
dec eax
je 0x423972
pop edi
pop ebx
pop esi
mov eax, 0xfffffffb
pop ebp
add esp, 0x24
ret
test ebx, ebx
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
jle 0x423b49
mov dword [esp + 0x10], ebx
lea esp, [esp]
xor edi, edi
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x4c]
push eax
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x24]
lea eax, [ebp + 0x54]
mov dword [esp + 0x30], ecx
push eax
lea ecx, [esp + 0x2c]
mov dword [esp + 0x38], edx
push ecx
mov edx, ecx
push edx
call fcn.0044a3f0
mov ecx, dword [esp + 0x58]
mov bl, byte [esp + 0x24]
mov eax, edi
shr eax, 3
lea esi, [eax + ecx]
mov al, byte [esp + 0x34]
mov edx, edi
and edx, 7
shl bl, 1
and al, 0x80
mov cl, dl
shr al, cl
mov cl, byte [esi]
add esp, 0x10
xor cl, al
mov byte [esi], cl
mov al, cl
mov cl, byte [esp + 0x15]
shr cl, 7
or cl, bl
mov bl, byte [esp + 0x15]
mov byte [esp + 0x14], cl
mov cl, byte [esp + 0x16]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x16]
mov byte [esp + 0x15], cl
mov cl, byte [esp + 0x17]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x17]
mov byte [esp + 0x16], cl
mov cl, byte [esp + 0x18]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x18]
mov byte [esp + 0x17], cl
mov cl, byte [esp + 0x19]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x19]
mov byte [esp + 0x18], cl
mov cl, byte [esp + 0x1a]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1a]
mov byte [esp + 0x19], cl
mov cl, byte [esp + 0x1b]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1b]
mov byte [esp + 0x1a], cl
mov cl, byte [esp + 0x1c]
shr cl, 7
shl bl, 1
or cl, bl
mov byte [esp + 0x1b], cl
mov cl, byte [esp + 0x1d]
mov bl, byte [esp + 0x1c]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1d]
mov byte [esp + 0x1c], cl
mov cl, byte [esp + 0x1e]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1e]
mov byte [esp + 0x1d], cl
mov cl, byte [esp + 0x1f]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1f]
mov byte [esp + 0x1e], cl
mov cl, byte [esp + 0x20]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x20]
mov byte [esp + 0x1f], cl
mov cl, byte [esp + 0x21]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x21]
mov byte [esp + 0x20], cl
mov cl, byte [esp + 0x22]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x22]
mov byte [esp + 0x21], cl
mov cl, byte [esp + 0x23]
shr cl, 7
shl bl, 1
or cl, bl
mov byte [esp + 0x22], cl
mov cl, 7
sub cl, dl
mov dl, byte [esp + 0x23]
shr al, cl
shl dl, 1
and al, 1
or al, dl
inc edi
cmp edi, 0x80
mov byte [esp + 0x23], al
jl 0x4239a2
dec dword [esp + 0x10]
jne 0x4239a0
mov ebx, dword [esp + 0x38]
pop edi
mov eax, ebx
pop ebx
pop esi
shl eax, 7
pop ebp
add esp, 0x24
ret
mov eax, dword [ecx]
mov edx, dword [esi]
mov ebx, dword [esi + 4]
mov edi, dword [esi + 8]
xor eax, edx
mov edx, dword [ecx + 4]
xor edx, ebx
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x28], edx
xor ecx, dword [esi + 0xc]
mov edx, dword [ebp + 0x4c]
push edx
xor eax, edi
mov edi, dword [esp + 0x4c]
lea ebx, [ebp + 0x54]
push ebx
mov dword [esp + 0x34], eax
lea eax, [esp + 0x2c]
push edi
push eax
mov dword [esp + 0x40], ecx
call fcn.0044a3f0
mov eax, dword [esp + 0x48]
add esp, 0x10
add esi, 0x10
dec eax
test eax, eax
jle 0x423b45
mov dword [esp + 0x10], eax
lea esp, [esp]
mov edx, dword [edi]
mov ecx, dword [esi]
mov eax, dword [edi + 4]
xor ecx, edx
mov edx, dword [esi + 4]
xor edx, eax
mov eax, dword [esi + 8]
mov dword [esp + 0x24], ecx
xor eax, dword [edi + 8]
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x28], edx
mov edx, dword [ebp + 0x4c]
push edx
mov dword [esp + 0x30], eax
xor ecx, dword [edi + 0xc]
push ebx
add edi, 0x10
lea eax, [esp + 0x2c]
push edi
push eax
mov dword [esp + 0x40], ecx
call fcn.0044a3f0
mov eax, dword [esp + 0x20]
add esp, 0x10
add esi, 0x10
dec eax
mov dword [esp + 0x10], eax
jne 0x423bb0
mov ebx, dword [esp + 0x38]
pop edi
mov eax, ebx
pop ebx
pop esi
shl eax, 7
pop ebp
add esp, 0x24
ret
test ebx, ebx
jle 0x423b49
mov edi, dword [esp + 0x48]
mov dword [esp + 0x38], ebx
nop
mov ecx, dword [ebp + 0x4c]
push ecx
lea eax, [ebp + 0x54]
push eax
push edi
push esi
call fcn.0044a3f0
mov eax, dword [esp + 0x48]
add esp, 0x10
add esi, 0x10
add edi, 0x10
dec eax
mov dword [esp + 0x38], eax
jne 0x423c20
pop edi
mov eax, ebx
pop ebx
pop esi
shl eax, 7
pop ebp
add esp, 0x24
ret
pop esi
xor eax, eax
pop ebp
add esp, 0x24
ret
mov eax, 0xfffffffb
pop ebp
add esp, 0x24
ret