Function at 0x42ac20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0xf4f5f6f7
mov eax, 0x31ace4ac
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x31ace49c]
xor ecx, eax
add ecx, 0x465510de
mov edx, ecx
and edx, 0x23
xor ecx, 0xa3
lea ecx, [ecx + edx*2]
add cl, 0x23
mov byte [esp + eax - 0x31ace49c], cl
inc eax
cmp eax, 0x31ace4b0
jne 0x42ac40
mov eax, dword [esp + 0x10]
mov ecx, dword [0x452164]
test ecx, ecx
je 0x42acc4
xor edx, edx
mov esi, dword [0x452168]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xc85f7986
je 0x42aca0
inc edx
cmp ecx, edx
jne 0x42ac90
jmp 0x42acc4
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x42acc4
lea eax, [esp + 0xc]
push eax
push 0
push 0
push 5
push 4
push dword [0x45216c]
push ecx
call fcn.00442160
add esp, 0x1c
cmp eax, 0xc0000004
jne 0x42ad50
push dword [esp + 0xc]
call fcn.0043e990
add esp, 4
mov ebp, eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], 0xf4f5f6f7
mov eax, 0x31ace4ac
nop
nop
movzx edx, byte [esp + eax - 0x31ace49c]
xor edx, eax
add edx, 0x465510de
mov esi, edx
and esi, 0x23
xor edx, 0xa3
lea edx, [edx + esi*2]
add dl, 0x23
mov byte [esp + eax - 0x31ace49c], dl
inc eax
cmp eax, 0x31ace4b0
jne 0x42acf0
mov eax, dword [esp + 0x10]
mov edx, dword [0x452164]
test edx, edx
je 0x42ad76
xor esi, esi
mov edi, dword [0x452168]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0xc85f7986
je 0x42ad57
inc esi
cmp edx, esi
jne 0x42ad40
jmp 0x42ad76
xor ebx, ebx
jmp 0x42b05e
mov edx, dword [edi + esi*8 + 4]
cmp edx, eax
je 0x42ad76
push 0
push ecx
push ebp
push 5
push 4
push dword [0x45216c]
push edx
call fcn.00442160
add esp, 0x1c
xor ebx, ebx
test eax, eax
js 0x42b055
mov esi, dword [ebp]
xor eax, eax
mov ecx, esi
mov edx, ebp
xor ebx, ebx
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 0x42ad90
mov dword [esp + 8], ebp
test ebx, ebx
jns 0x42adb4
mov eax, 0xffffffff
push eax
call fcn.0040cb10
add esp, 4
mov ebp, eax
mov ecx, dword [esp + 8]
jmp 0x42ade1
add ecx, esi
mov word [ebp], 0xa
add ebp, 2
mov esi, dword [ecx]
test esi, esi
je 0x42ae04
mov edx, dword [ecx + esi + 0x3c]
movzx edi, word [edx]
test di, di
je 0x42add0
add edx, 2
mov word [ebp], di
add ebp, 2
movzx edi, word [edx]
add edx, 2
test di, di
jne 0x42adf0
jmp 0x42add0
xor edx, edx
cmp ebp, eax
je 0x42b046
mov word [ebp], 0
movzx edi, word [eax]
test di, di
je 0x42ae6d
mov esi, eax
add esi, 2
xor edx, edx
mov ecx, edi
jmp 0x42ae3c
inc edx
movzx ecx, word [esi]
add esi, 2
test cx, cx
je 0x42ae6d
cmp cx, 0x7f
jbe 0x42ae30
mov ebx, edx
movzx edx, cx
cmp edx, 0x7ff
ja 0x42ae60
mov edx, ebx
add edx, 2
jmp 0x42ae31
cmp cx, 0xffff
mov edx, ebx
je 0x42ae31
add edx, 3
jmp 0x42ae31
mov dword [esp + 0x20], eax
mov dword [esp + 4], edx
lea eax, [edx + 1]
push eax
call fcn.0040cb10
add esp, 4
mov ebp, eax
mov dword [esp], eax
test di, di
je 0x42afb7
mov ebp, dword [esp]
cmp dword [esp + 4], 0
je 0x42afb7
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 4]
mov ebp, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, di
lea edi, [edx + 2]
cmp ax, 0x7f
ja 0x42aed0
lea esi, [ebp + 1]
mov byte [ebp], al
jmp 0x42af60
cmp eax, 0x7ff
ja 0x42af00
cmp ecx, 2
jb 0x42af00
mov edx, eax
shr edx, 6
or dl, 0xc0
mov byte [ebp], dl
and al, 0x3f
or al, 0x80
lea esi, [ebp + 2]
mov byte [ebp + 1], al
jmp 0x42af60
mov esi, eax
and esi, 0xfc00
cmp esi, 0xd800
jne 0x42af7a
cmp ecx, 4
jb 0x42af7a
movzx esi, word [edx + 2]
add edx, 4
shl eax, 0xa
add eax, esi
add eax, 0xfca02400
mov ebx, eax
shr ebx, 0x12
xor bl, 0xf0
mov byte [ebp], bl
mov ebx, eax
shr ebx, 0xc
and bl, 0x3f
or bl, 0x80
mov byte [ebp + 1], bl
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [ebp + 2], al
mov eax, esi
and al, 0x3f
or al, 0x80
lea esi, [ebp + 4]
mov byte [ebp + 3], al
mov edi, edx
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 0x42afb7
test ecx, ecx
jne 0x42aeb0
jmp 0x42afb7
movzx edx, si
cmp edx, 0xdc00
jne 0x42af89
mov edx, edi
jmp 0x42af68
cmp ecx, 3
jb 0x42afb3
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
and al, 0x3f
or al, 0x80
lea esi, [ebp + 3]
mov byte [ebp + 2], al
jmp 0x42af60
mov esi, ebp
jmp 0x42af60
mov byte [ebp], 0
mov dword [esp + 0x10], 0x809d9370
mov dword [esp + 0x14], 0x82959681
mov dword [esp + 0x18], 0xb38e478b
mov dword [esp + 0x1c], 0x3d88
mov eax, 0xc054b408
mov ecx, 0x77
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 0x3fab4c08]
mov edx, ebx
xor edx, eax
or edx, ecx
add dl, dl
add dl, bl
movzx edx, dl
add edx, eax
add dl, 0xda
mov byte [esp + eax + 0x3fab4c08], dl
inc eax
dec ecx
cmp eax, 0xc054b418
jne 0x42aff0
lea eax, [esp + 0x10]
mov ecx, dword [esp + 0x38]
push dword [esp + 4]
mov esi, dword [esp + 4]
push esi
push eax
call fcn.0040d680
mov ebx, eax
push esi
call fcn.0040cb20
add esp, 4
mov ebp, dword [esp + 8]
mov eax, dword [esp + 0x20]
jmp 0x42b04c
xor ebx, ebx
mov ebp, dword [esp + 8]
push eax
call fcn.0040cb20
add esp, 4
push ebp
call fcn.0043ea00
add esp, 4
mov eax, ebx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret