Function at 0x421fc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0x1c1d1a1b
mov dword [esp + 8], 0
mov eax, 0xab
mov ecx, 0x54
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x51
mov edx, eax
and edx, 0x8e
sub edx, esi
xor dl, byte [esp + eax - 0xa7]
add dl, 0xde
mov byte [esp + eax - 0xa7], dl
inc eax
dec ecx
cmp eax, 0xb3
jne 0x421ff0
mov eax, dword [esp + 4]
mov ecx, dword [0x4497f8]
test ecx, ecx
je 0x422064
xor esi, esi
mov edx, dword [0x4497fc]
nop
cmp dword [edx + esi*8], 0x9abdb589
je 0x422040
inc esi
cmp ecx, esi
jne 0x422030
jmp 0x422064
mov ecx, dword [edx + esi*8 + 4]
cmp ecx, eax
je 0x422064
lea eax, [esp + 0x1c]
push eax
push 0
push 0
push 5
push 0x10
push ecx
push dword [0x449800]
call fcn.00438810
add esp, 0x1c
mov dword [esp], eax
mov dword [esp + 4], 0xd19e9f98
mov byte [esp + 8], 0
mov ecx, 0x5feb5e65
mov esi, 0x2014a19a
nop
nop
movzx edi, byte [esp + ecx - 0x5feb5e61]
lea ebx, [edi + edi]
not ebx
add ebx, edi
lea eax, [esi - 0x2014a100]
mov edx, esi
and edx, 0x2010011a
mov ebp, ecx
and ebp, 0x40c84605
or ebp, edx
xor ebp, edi
lea edx, [ecx - 0x5feb5e00]
and edx, edi
and edi, 0x19
and ebx, 0xe6
or ebx, edi
xor ebp, 0x7a
or edx, ebp
xor ebx, 0x19
or ebx, eax
and ebx, edx
add bl, 7
mov byte [esp + ecx - 0x5feb5e61], bl
inc ecx
dec esi
cmp ecx, 0x5feb5e6a
jne 0x422080
mov eax, dword [esp]
cmp eax, dword [esp + 4]
jne 0x42217a
push dword [esp + 0x1c]
call fcn.00435670
add esp, 4
mov ebp, eax
mov ecx, dword [esp + 0x1c]
mov dword [esp + 4], 0x1c1d1a1b
mov dword [esp + 8], 0
mov eax, 0xab
mov edx, 0x54
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edx
and esi, 0x51
mov ebx, eax
and ebx, 0x8e
sub ebx, esi
xor bl, byte [esp + eax - 0xa7]
add bl, 0xde
mov byte [esp + eax - 0xa7], bl
inc eax
dec edx
cmp eax, 0xb3
jne 0x422120
mov eax, dword [esp + 4]
mov edx, dword [0x4497f8]
test edx, edx
je 0x4221a0
xor esi, esi
mov edi, dword [0x4497fc]
nop
cmp dword [edi + esi*8], 0x9abdb589
je 0x422181
mov ebx, esi
and ebx, 1
xor esi, 1
lea esi, [esi + ebx*2]
cmp esi, edx
jb 0x422160
jmp 0x4221a0
xor ebx, ebx
jmp 0x42246e
mov edx, dword [edi + esi*8 + 4]
cmp edx, eax
je 0x4221a0
push 0
push ecx
push ebp
push 5
push 0x10
push edx
push dword [0x449800]
call fcn.00438810
add esp, 0x1c
xor ebx, ebx
test eax, eax
js 0x422465
mov esi, dword [ebp]
xor eax, eax
mov ecx, esi
mov edx, ebp
nop
nop
nop
nop
nop
nop
nop
nop
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 0x4221c0
test ebx, ebx
jns 0x4221e0
mov eax, 0xffffffff
push eax
call fcn.00408630
add esp, 4
mov dword [esp], eax
mov ecx, ebp
jmp 0x422200
add ecx, esi
mov word [eax], 0xa
add eax, 2
mov esi, dword [ecx]
test esi, esi
je 0x422223
mov edx, dword [ecx + esi + 0x3c]
movzx edi, word [edx]
test di, di
je 0x4221f0
add edx, 2
nop
mov word [eax], di
add eax, 2
movzx edi, word [edx]
add edx, 2
test di, di
jne 0x422210
jmp 0x4221f0
xor ebx, ebx
mov ecx, dword [esp]
cmp eax, ecx
je 0x42245c
mov word [eax], 0
movzx edi, word [ecx]
test di, di
je 0x42228b
mov eax, dword [esp]
add eax, 2
xor ebx, ebx
mov ecx, edi
jmp 0x42225c
inc ebx
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0x42228b
cmp cx, 0x7f
jbe 0x422250
movzx edx, cx
cmp edx, 0x7ff
ja 0x422280
add ebx, 2
jmp 0x422251
cmp cx, 0xffff
je 0x422251
add ebx, 3
jmp 0x422251
mov dword [esp + 0x20], ebp
lea eax, [ebx + 1]
push eax
call fcn.00408630
add esp, 4
mov ebp, eax
mov dword [esp + 0x18], eax
test di, di
je 0x4223e7
mov ebp, dword [esp + 0x18]
test ebx, ebx
je 0x4223e7
mov edx, dword [esp]
mov ecx, ebx
mov ebp, dword [esp + 0x18]
nop
movzx eax, di
lea edi, [edx + 2]
cmp ax, 0x7f
ja 0x4222e0
lea esi, [ebp + 1]
mov byte [ebp], al
jmp 0x422390
cmp eax, 0x7ff
ja 0x422310
cmp ecx, 2
jb 0x422310
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 0x422390
mov esi, eax
and esi, 0xfc00
cmp esi, 0xd800
jne 0x4223aa
cmp ecx, 4
jb 0x4223aa
movzx esi, word [edx + 2]
mov dword [esp + 0x24], esi
add edx, 4
shl eax, 0xa
lea edi, [eax + esi]
add edi, 0xfca02400
mov eax, edi
shr eax, 0x12
mov esi, edi
shr esi, 0x11
and esi, 0xe0
xor eax, 0xf0
add eax, esi
mov byte [ebp], al
mov esi, edi
shr esi, 0xc
mov eax, esi
not eax
or eax, 0x3f
add eax, esi
add al, 0x81
mov byte [ebp + 1], al
mov eax, edi
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [ebp + 2], al
mov eax, dword [esp + 0x24]
and al, 0x3f
or al, 0x80
lea esi, [ebp + 4]
mov byte [ebp + 3], al
mov edi, edx
nop
nop
nop
add ecx, ebp
sub ecx, esi
mov edx, edi
mov ebp, esi
movzx edi, word [edx]
test di, di
je 0x4223e7
test ecx, ecx
jne 0x4222c0
jmp 0x4223e7
movzx edx, si
cmp edx, 0xdc00
jne 0x4223b9
mov edx, edi
jmp 0x422398
cmp ecx, 3
jb 0x4223e3
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 0x422390
mov esi, ebp
jmp 0x422390
mov byte [ebp], 0
mov dword [esp + 4], 0x8c9b9df4
mov dword [esp + 8], 0x869b9a83
mov dword [esp + 0xc], 0x8986c199
mov word [esp + 0x10], 0x3784
mov dword [esp + 0x12], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xc7
xor cl, byte [esp + eax + 4]
add cl, 0x1d
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0x12
jne 0x422420
lea eax, [esp + 4]
mov ecx, dword [esp + 0x3c]
push ebx
mov esi, dword [esp + 0x1c]
push esi
push eax
call fcn.004094e0
mov ebx, eax
push esi
call fcn.00408640
add esp, 4
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp]
push ecx
call fcn.00408640
add esp, 4
push ebp
call fcn.004356c0
add esp, 4
mov eax, ebx
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret