Function at 0x42a710
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0x101f1e1d
mov word [esp + 8], 0
xor eax, eax
movzx edx, byte [esp + eax + 4]
mov ecx, eax
xor ecx, 0xcb1c73a
mov esi, eax
or esi, 5
and esi, ecx
mov ecx, eax
and ecx, 5
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
xor edi, 2
imul edi, ecx
mov ecx, eax
xor ecx, 0xf34e38c5
add ecx, esi
add ecx, edi
mov esi, ecx
and esi, edx
mov edi, esi
and edi, 2
mov ebx, esi
or ebx, 0xfffffffd
inc ebx
mov ebp, esi
and ebp, 0xfffffffd
imul ebp, ebx
or esi, 2
imul esi, edi
sub ebp, esi
add ecx, edx
add ecx, ebp
mov edx, ecx
and edx, 0x24
mov esi, ecx
and esi, 2
mov edi, esi
xor edi, 2
imul edi, edx
or edx, 2
imul edx, esi
xor ecx, 0x26
add ecx, edi
add ecx, edx
inc cl
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 6
jne 0x42a730
mov eax, dword [esp + 4]
mov ecx, dword [0x451b44]
test ecx, ecx
je 0x42a804
xor edx, edx
mov esi, dword [0x451b48]
nop
nop
cmp dword [esi + edx*8], 0x9abdb589
je 0x42a7e0
inc edx
cmp ecx, edx
jne 0x42a7d0
jmp 0x42a804
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x42a804
lea eax, [esp + 0x1c]
push eax
push 0
push 0
push 5
push 4
push ecx
push dword [0x451b4c]
call fcn.00441940
add esp, 0x1c
mov dword [esp + 4], 0xa1e6e7f8
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xa9
xor dl, byte [esp + ecx + 4]
add dl, 0xb3
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 7
jne 0x42a820
xor ebx, ebx
cmp eax, dword [esp + 4]
jne 0x42abfe
push dword [esp + 0x1c]
call fcn.0043e0d0
add esp, 4
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], 0x101f1e1d
mov word [esp + 8], 0
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ebx + 4]
mov eax, ebx
xor eax, 0xcb1c73a
mov esi, ebx
or esi, 5
and esi, eax
mov eax, ebx
and eax, 5
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
xor edi, 2
imul edi, eax
mov eax, ebx
xor eax, 0xf34e38c5
add eax, esi
add eax, edi
mov esi, eax
and esi, edx
mov edi, esi
and edi, 2
mov ebp, esi
or ebp, 0xfffffffd
inc ebp
mov ecx, esi
and ecx, 0xfffffffd
imul ecx, ebp
or esi, 2
imul esi, edi
sub ecx, esi
add eax, edx
add eax, ecx
mov edx, eax
and edx, 0x24
mov ecx, eax
and ecx, 2
mov esi, ecx
xor esi, 2
imul esi, edx
or edx, 2
imul edx, ecx
xor eax, 0x26
add eax, esi
add eax, edx
inc al
mov byte [esp + ebx + 4], al
inc ebx
cmp ebx, 6
jne 0x42a870
mov eax, dword [esp + 4]
mov edx, dword [0x451b44]
test edx, edx
je 0x42a920
xor esi, esi
mov edi, dword [0x451b48]
mov ebp, dword [esp + 0x18]
cmp dword [edi + esi*8], 0x9abdb589
je 0x42a926
inc esi
cmp edx, esi
jne 0x42a910
jmp 0x42a948
mov ebp, dword [esp + 0x18]
jmp 0x42a948
mov edx, dword [edi + esi*8 + 4]
cmp edx, eax
je 0x42a948
push 0
push dword [esp + 4]
push ebp
push 5
push 4
push edx
push dword [0x451b4c]
call fcn.00441940
add esp, 0x1c
xor ebx, ebx
test eax, eax
js 0x42abf5
mov esi, dword [ebp]
xor eax, eax
mov ecx, esi
mov edx, ebp
nop
nop
nop
nop
nop
lea edi, [edx + ecx]
mov ecx, dword [edx + ecx]
add eax, 0x208
add ebx, 0x104
mov edx, edi
test ecx, ecx
jne 0x42a960
test ebx, ebx
jns 0x42a980
mov eax, 0xffffffff
push eax
call fcn.0040cc60
add esp, 4
mov dword [esp], eax
mov ecx, ebp
jmp 0x42a9a0
add ecx, esi
mov word [eax], 0xa
add eax, 2
mov esi, dword [ecx]
test esi, esi
je 0x42a9c3
mov edx, dword [ecx + esi + 0x3c]
movzx edi, word [edx]
test di, di
je 0x42a990
add edx, 2
nop
mov word [eax], di
add eax, 2
movzx edi, word [edx]
add edx, 2
test di, di
jne 0x42a9b0
jmp 0x42a990
xor ebx, ebx
mov ecx, dword [esp]
cmp eax, ecx
je 0x42abec
mov word [eax], 0
movzx edi, word [ecx]
test di, di
je 0x42aa2b
mov eax, dword [esp]
add eax, 2
xor ebx, ebx
mov ecx, edi
jmp 0x42a9fc
inc ebx
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0x42aa2b
cmp cx, 0x7f
jbe 0x42a9f0
movzx edx, cx
cmp edx, 0x7ff
ja 0x42aa20
add ebx, 2
jmp 0x42a9f1
cmp cx, 0xffff
je 0x42a9f1
add ebx, 3
jmp 0x42a9f1
lea eax, [ebx + 1]
push eax
call fcn.0040cc60
add esp, 4
mov ebp, eax
mov dword [esp + 0x14], eax
test di, di
je 0x42ab82
mov ebp, dword [esp + 0x14]
test ebx, ebx
je 0x42ab82
mov edx, dword [esp]
mov ecx, ebx
mov ebp, dword [esp + 0x14]
nop
nop
nop
nop
nop
movzx eax, di
lea edi, [edx + 2]
cmp ax, 0x7f
ja 0x42aa80
lea esi, [ebp + 1]
mov byte [ebp], al
jmp 0x42ab20
cmp eax, 0x7ff
ja 0x42aab0
cmp ecx, 2
jb 0x42aab0
mov edx, eax
shr edx, 6
add dl, 0xc0
mov byte [ebp], dl
and al, 0x3f
or al, 0x80
lea esi, [ebp + 2]
mov byte [ebp + 1], al
jmp 0x42ab20
mov esi, eax
and esi, 0xfc00
cmp esi, 0xd800
jne 0x42ab3a
cmp ecx, 4
jb 0x42ab3a
movzx esi, word [edx + 2]
add edx, 4
shl eax, 0xa
lea edi, [eax + esi]
add edi, 0xfca02400
mov eax, edi
shr eax, 0x12
add al, 0xf0
mov byte [ebp], al
mov eax, edi
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [ebp + 1], al
mov eax, edi
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [ebp + 2], al
mov edi, esi
or edi, 0x3f
mov eax, esi
xor eax, 0xc0
and eax, edi
add al, 0x80
lea esi, [ebp + 4]
mov byte [ebp + 3], al
mov edi, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
add ecx, ebp
sub ecx, esi
mov edx, edi
mov ebp, esi
movzx edi, word [edx]
test di, di
je 0x42ab82
test ecx, ecx
jne 0x42aa60
jmp 0x42ab82
movzx edx, si
cmp edx, 0xdc00
jne 0x42ab49
mov edx, edi
jmp 0x42ab28
cmp ecx, 3
jb 0x42ab7e
mov edx, eax
shr edx, 0xc
or dl, 0xe0
mov byte [ebp], dl
mov edx, eax
shr edx, 6
and dl, 0x3f
or dl, 0x80
mov byte [ebp + 1], dl
mov edx, eax
xor edx, 0xc0
or eax, 0x3f
and eax, edx
add al, 0x80
lea esi, [ebp + 3]
mov byte [ebp + 2], al
jmp 0x42ab20
mov esi, ebp
jmp 0x42ab20
mov byte [ebp], 0
mov dword [esp + 4], 0x14ebe50c
mov dword [esp + 8], 0xefbfa13
mov dword [esp + 0xc], 0xf9fe31f9
mov dword [esp + 0x10], 0x6ffc
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x6b
xor cl, byte [esp + eax + 4]
add cl, 0xe9
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0x10
jne 0x42abb0
lea eax, [esp + 4]
mov ecx, dword [esp + 0x34]
push ebx
mov esi, dword [esp + 0x18]
push esi
push eax
call fcn.0040d650
mov ebx, eax
push esi
call fcn.0040cc70
add esp, 4
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp]
push ecx
call fcn.0040cc70
add esp, 4
push ebp
call fcn.0043e170
add esp, 4
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret