Function at 0x42a7f0
Capabilities:
Check for software breakpoints
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov dword [esp + 0x20], 0
mov dword [esp + 8], 0xdcdddedf
mov dword [esp + 0xc], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x50
xor cl, byte [esp + eax + 8]
add cl, 0x70
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 8
jne 0x42a820
mov eax, dword [esp + 8]
mov ecx, dword [0x45064c]
test ecx, ecx
je 0x42a884
xor edx, edx
mov esi, dword [0x450650]
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x9abdb589
je 0x42a860
inc edx
cmp ecx, edx
jne 0x42a850
jmp 0x42a884
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x42a884
lea eax, [esp + 0x20]
push eax
push 0
push 0
push 5
push 4
push dword [0x450654]
push ecx
call fcn.00441b40
add esp, 0x1c
mov dword [esp + 8], 0x5312111c
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
mov ecx, 0xc5
mov edx, 0x3b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0xbd]
mov edi, esi
not edi
or edi, edx
lea ebp, [ecx + edi]
lea ebx, [esi + edi]
inc ebx
or ebx, ebp
add bl, 0x2c
mov byte [esp + ecx - 0xbd], bl
inc ecx
dec edx
cmp ecx, 0xcc
jne 0x42a8b0
xor ebx, ebx
cmp eax, dword [esp + 8]
jne 0x42ac7e
push dword [esp + 0x20]
call fcn.0043e7c0
add esp, 4
mov ebp, eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 8], 0xdcdddedf
mov dword [esp + 0xc], 0
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x50
xor al, byte [esp + ebx + 8]
add al, 0x70
mov byte [esp + ebx + 8], al
inc ebx
cmp ebx, 8
jne 0x42a910
mov eax, dword [esp + 8]
mov edx, dword [0x45064c]
test edx, edx
je 0x42a96f
xor esi, esi
mov edi, dword [0x450650]
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0x9abdb589
je 0x42a950
inc esi
cmp edx, esi
jne 0x42a940
jmp 0x42a96f
mov edx, dword [edi + esi*8 + 4]
cmp edx, eax
je 0x42a96f
push 0
push ecx
push ebp
push 5
push 4
push dword [0x450654]
push edx
call fcn.00441b40
add esp, 0x1c
xor ebx, ebx
test eax, eax
js 0x42ac75
mov esi, dword [ebp]
mov eax, esi
mov ecx, ebp
lea edx, [ecx + eax]
mov eax, dword [ecx + eax]
dec ebx
mov ecx, edx
test eax, eax
jne 0x42a980
lea eax, [ebx - 1]
and eax, 0x104
neg ebx
mov ecx, ebx
and ecx, 0xfffffefb
imul ecx, eax
mov eax, ebx
and eax, 0x104
or ebx, 0x104
imul ebx, eax
add ebx, ecx
jns 0x42a9bd
mov ebx, 0xffffffff
jmp 0x42a9bf
add ebx, ebx
push ebx
call fcn.0040c8d0
add esp, 4
mov dword [esp], eax
mov ecx, ebp
jmp 0x42a9e0
add ecx, esi
mov word [eax], 0xa
add eax, 2
mov esi, dword [ecx]
test esi, esi
je 0x42aa03
mov edx, dword [ecx + esi + 0x3c]
movzx edi, word [edx]
test di, di
je 0x42a9d0
add edx, 2
nop
mov word [eax], di
add eax, 2
movzx edi, word [edx]
add edx, 2
test di, di
jne 0x42a9f0
jmp 0x42a9d0
xor ebx, ebx
mov ecx, dword [esp]
cmp eax, ecx
je 0x42ac6c
mov word [eax], 0
movzx edi, word [ecx]
test di, di
je 0x42aa73
mov eax, dword [esp]
add eax, 2
xor ebx, ebx
mov ecx, edi
jmp 0x42aa3c
inc ebx
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0x42aa73
cmp cx, 0x7f
jbe 0x42aa30
movzx edx, cx
cmp edx, 0x7ff
ja 0x42aa60
add ebx, 2
jmp 0x42aa31
cmp cx, 0xffff
je 0x42aa31
mov ecx, ebx
and ecx, 3
xor ebx, 3
lea ebx, [ebx + ecx*2]
jmp 0x42aa31
mov dword [esp + 0x24], ebp
lea eax, [ebx + 1]
push eax
call fcn.0040c8d0
add esp, 4
mov dword [esp + 0x1c], eax
mov ecx, eax
test di, di
je 0x42abf3
mov ecx, dword [esp + 0x1c]
test ebx, ebx
je 0x42abf3
mov ebp, dword [esp]
mov edx, ebx
mov ecx, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, di
lea edi, [ebp + 2]
cmp ax, 0x7f
ja 0x42aad0
lea esi, [ecx + 1]
mov byte [ecx], al
jmp 0x42ab80
cmp eax, 0x7ff
ja 0x42ab00
cmp edx, 2
jb 0x42ab00
mov esi, edx
mov edx, eax
shr edx, 6
add dl, 0xc0
mov byte [ecx], dl
mov edx, esi
and al, 0x3f
or al, 0x80
lea esi, [ecx + 2]
mov byte [ecx + 1], al
jmp 0x42ab80
mov dword [esp + 4], ecx
mov esi, eax
and esi, 0xfc00
cmp esi, 0xd800
jne 0x42ab9b
cmp edx, 4
jb 0x42ab9b
movzx edi, word [ebp + 2]
add ebp, 4
shl eax, 0xa
lea ecx, [eax + edi]
add ecx, 0xfca02400
mov eax, ecx
shr eax, 0x12
add al, 0xf0
mov esi, dword [esp + 4]
mov byte [esi], al
mov eax, ecx
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [esi + 1], al
shr ecx, 6
mov eax, ecx
xor eax, 0xc0
or ecx, 0x3f
and ecx, eax
add cl, 0x80
mov byte [esi + 2], cl
mov ecx, esi
mov al, 0x3f
mov esi, edx
mov edx, edi
sub al, dl
mov edx, esi
and al, 0x3f
xor al, 0xbf
lea esi, [ecx + 4]
mov byte [ecx + 3], al
mov edi, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
add edx, ecx
sub edx, esi
mov ebp, edi
mov ecx, esi
movzx edi, word [ebp]
test di, di
je 0x42abf3
test edx, edx
jne 0x42aab0
jmp 0x42abf3
movzx ecx, si
cmp ecx, 0xdc00
jne 0x42abae
mov ebp, edi
mov ecx, dword [esp + 4]
jmp 0x42ab88
cmp edx, 3
jb 0x42abeb
mov ecx, eax
shr ecx, 0xc
or cl, 0xe0
mov esi, dword [esp + 4]
mov byte [esi], cl
mov ebp, edx
mov edx, eax
shr edx, 6
mov ecx, edx
xor ecx, 0xc0
or edx, 0x3f
and edx, ecx
mov ecx, esi
add dl, 0x80
mov byte [esi + 1], dl
mov edx, ebp
and al, 0x3f
or al, 0x80
add esi, 3
mov byte [ecx + 2], al
jmp 0x42ab80
mov ecx, dword [esp + 4]
mov esi, ecx
jmp 0x42ab80
mov byte [ecx], 0
mov dword [esp + 8], 0xc1b1d34
mov dword [esp + 0xc], 0x61b1a03
mov dword [esp + 0x10], 0x9064119
mov word [esp + 0x14], 0x7704
mov dword [esp + 0x16], 0
mov word [esp + 0x1a], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xe7
xor cl, byte [esp + eax + 8]
add cl, 0x7d
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0x14
jne 0x42ac30
lea eax, [esp + 8]
mov ecx, dword [esp + 0x3c]
push ebx
mov esi, dword [esp + 0x20]
push esi
push eax
call fcn.0040d610
mov ebx, eax
push esi
call fcn.0040c8e0
add esp, 4
mov ebp, dword [esp + 0x24]
mov ecx, dword [esp]
push ecx
call fcn.0040c8e0
add esp, 4
push ebp
call fcn.0043e820
add esp, 4
mov eax, ebx
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret