Function at 0x423849
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x474
xor ebx, ebx
cmp byte [esp + 0x48c], 0
jne 0x423b5f
mov edi, dword [esp + 0x494]
mov ebp, dword [esp + 0x488]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0xf75af55b
mov dword [esp + 0x20], 0xfb89f95d
mov dword [esp + 0x24], 0xff90fd8e
mov dword [esp + 0x28], 0xc36ec164
mov dword [esp + 0x2c], 0xc7c6c568
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x1c]
mov edx, ebx
and edx, 0x28
mov esi, eax
xor esi, 0x94f34f54
add esi, edx
xor esi, ecx
mov ecx, esi
or ecx, 0x5f
add ecx, esi
not esi
or esi, 0x5f
add ecx, esi
add cl, 2
mov byte [esp + eax + 0x1c], cl
inc eax
add ebx, 2
cmp eax, 0x14
jne 0x4237e0
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x14]
push eax
call fcn.0043ba40
push 0xebc73df8
push dword [esp + 0x18]
call fcn.0043dba0
add esp, 8
lea ecx, [esp + 4]
push ecx
push 0x44059c
push 1
push 0
push 0x4405ac
call eax
test eax, eax
js 0x4238b8
mov eax, dword [esp + 4]
mov ecx, dword [eax]
lea edx, [esp + 0xc]
push edx
push 0x4405bc
push eax
call dword [ecx]
test eax, eax
js 0x4238bf
mov esi, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + esi + 2], 0
lea esi, [esi + 2]
jne 0x423870
mov edi, dword [edi + 8]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x423890
sar esi, 1
sar eax, 1
add eax, esi
inc eax
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
test eax, eax
jns 0x4238c6
mov eax, 0xffffffff
jmp 0x4238c8
xor ebx, ebx
jmp 0x423b5f
xor ebx, ebx
jmp 0x423b55
add eax, eax
push eax
call fcn.00408b20
add esp, 4
movzx ecx, word [edi]
mov dword [esp + 8], eax
test cx, cx
je 0x423901
add edi, 2
mov eax, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x4238f0
mov word [esp + 0x1c], 0x8ce7
xor ecx, ecx
mov dl, 1
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x1c]
lea ebx, [ecx + 0x3d603913]
mov ebp, 0xc29fc6ec
sub ebp, ecx
and ebp, 0xc085860e
and ebx, 0x38403111
or ebx, ebp
xor ebx, edi
mov edi, ebx
and edi, 0x99
xor edi, 0x91
and ebx, 0x66
xor ebx, 6
sub ebx, edi
inc bl
mov byte [esp + ecx + 0x1c], bl
mov ecx, 1
test dl, 1
mov edx, 0
jne 0x423910
movzx ecx, word [esp + 0x1c]
mov word [eax], cx
add eax, 2
mov ebp, dword [esp + 0x488]
movzx ecx, word [ebp]
test cx, cx
je 0x4239a3
lea edx, [ebp + 2]
mov ebx, dword [esp + 0x494]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423990
jmp 0x4239aa
mov ebx, dword [esp + 0x494]
mov word [eax], 0
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
push 0
push dword [esp + 0xc]
push eax
call dword [ecx + 0x14]
test eax, eax
js 0x423a1e
mov eax, dword [esp + 4]
mov ecx, dword [eax]
push 1
push 0
push eax
call dword [ecx + 0x4c]
test eax, eax
js 0x423a1e
mov eax, dword [esp + 4]
mov ecx, dword [eax]
lea edi, [esp + 0x26c]
push 1
lea edx, [esp + 0x20]
push edx
push 0x104
push edi
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x423a1e
mov edi, dword [ebx + 4]
mov eax, 0xfffffffe
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x423a00
sar eax, 1
lea ecx, [esi + eax]
add ecx, 2
test ecx, ecx
jns 0x423a25
mov eax, 0xffffffff
jmp 0x423a2e
xor ebx, ebx
jmp 0x423b3f
add esi, eax
lea eax, [esi*2 + 4]
push eax
call fcn.00408b20
add esp, 4
movzx ecx, word [edi]
mov ebx, eax
test cx, cx
je 0x423a61
add edi, 2
mov ebx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x423a50
mov dword [esp + 0x10], eax
mov word [esp + 2], 0x5977
xor ecx, ecx
nop
nop
movzx esi, byte [esp + ecx + 2]
mov edi, 0x67
sub edi, ecx
mov edx, ecx
or edx, esi
not esi
or esi, edi
or edx, 0x3a276498
and edx, esi
add edx, 0x2ec4db3f
mov esi, edx
xor esi, 0x6a56d760
and edx, 0x5a8289f
add edx, edx
sub edx, esi
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov esi, edx
and esi, 0x60
xor edx, 0x60
lea edx, [edx + esi*2]
mov byte [esp + ecx + 2], dl
lea ecx, [ecx + ecx*2]
xor ecx, 1
cmp ecx, 2
jb 0x423a70
movzx ecx, word [esp + 2]
mov word [ebx], cx
add ebx, 2
movzx ecx, word [ebp]
test cx, cx
je 0x423b04
add ebp, 2
lea edx, [esp + 0x26c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x423af0
jmp 0x423b0b
lea edx, [esp + 0x26c]
mov word [ebx], 0
mov ecx, dword [esp + 0x494]
mov eax, dword [ecx + 0x14]
dec eax
push 1
push eax
push dword [ecx + 0x10]
push dword [ecx + 0xc]
push edx
mov esi, dword [esp + 0x24]
push esi
push dword [ecx]
call fcn.00422bd0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00408b30
add esp, 4
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [esp + 8]
call fcn.00408b30
add esp, 4
mov eax, dword [esp + 4]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, ebx
add esp, 0x474
pop esi
pop edi
pop ebx
pop ebp
ret 0x10