Function at 0x401e40
Capabilities:
Encode data using xor

Disassembly:
push ecx
push esi
mov esi, eax
mov eax, str.ERROR
mov edx, esi
sub edx, eax
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x401e50
mov eax, str.ERROR
lea edx, [esi + 0x1fe]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x401e67
mov eax, str.ERROR
lea edx, [esi + 0x2fd]
sub edx, eax
mov edi, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x401e80
mov eax, str.ERROR
lea edx, [esi + 0x3fc]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x401e97
mov eax, str.ERROR
lea edx, [esi + 0x4fb]
sub edx, eax
mov edi, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x401eb0
mov eax, str.ERROR
lea edx, [esi + 0x5fa]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x401ec7
mov eax, dword [str.NONE]
mov dword [esi + 0x6f9], eax
mov cl, byte [0x4496e0]
mov byte [esi + 0x6fd], cl
lea ecx, [esi + 0xff]
mov byte [esi + 0x900], 0
mov byte [esi + 0x901], 0
cmp byte [ecx], 0
je 0x401f39
mov al, byte [ecx]
cmp al, 0x61
jb 0x401f0f
cmp al, 0x7a
ja 0x401f0f
xor al, 0x20
mov byte [ecx], al
mov al, byte [ecx]
cmp al, 0x30
jb 0x401f21
cmp al, 0x5a
ja 0x401f21
cmp al, 0x39
jbe 0x401f33
cmp al, 0x41
jae 0x401f33
cmp byte [ecx], 0
je 0x401f33
mov eax, ecx
mov dl, byte [eax + 1]
mov byte [eax], dl
inc eax
cmp byte [eax], 0
jne 0x401f28
inc ecx
cmp byte [ecx], 0
jne 0x401f01
lea eax, [esi + 0xff]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401f42
sub eax, edx
cmp eax, 0x14
jae 0x401f58
call fcn.004018b0
pop esi
pop ecx
ret
lea eax, [esi + 0xff]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401f61
sub eax, edx
push ebp
lea edx, [esi + 0xff]
lea ebp, [eax - 0x14]
mov al, byte [edx]
xor ecx, ecx
cmp al, 0x30
jb 0x401f8d
lea esp, [esp]
cmp al, 0x39
ja 0x401f8d
mov al, byte [edx + ecx + 1]
inc ecx
cmp al, 0x30
jae 0x401f80
mov eax, edx
push edi
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x401f93
sub eax, edi
cmp ecx, eax
jne 0x4024a8
lea eax, [esi + 0xff]
mov edx, esi
sub edx, eax
mov edi, edi
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x401fb0
call fcn.00401db0
mov edx, 2
lea ecx, [esi + 0xff]
or eax, 0xffffffff
lea ecx, [ecx]
movzx edi, byte [ecx]
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x460e00]
inc ecx
sub edx, 1
jne 0x401fd0
push ebx
mov ebx, eax
test eax, 0x2001
je 0x402010
movzx ecx, byte [esi + 0xff]
xor ecx, eax
and ecx, 0xff
shr eax, 8
xor eax, dword [ecx*4 + 0x460e00]
mov ebx, eax
lea eax, [esi + 0xff]
mov ecx, 3
lea edi, [eax + 1]
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402020
sub eax, edi
cmp eax, 3
jbe 0x4020f1
mov edi, ecx
mov edx, esi
mov eax, ebx
test ecx, ecx
jbe 0x40205b
lea esp, [esp]
movzx ebx, byte [edx]
xor ebx, eax
and ebx, 0xff
shr eax, 8
xor eax, dword [ebx*4 + 0x460e00]
inc edx
sub edi, 1
jne 0x402040
mov ebx, eax
test cl, 2
je 0x40207b
movzx edx, byte [ecx + esi - 3]
xor edx, eax
and edx, 0xff
shr eax, 8
xor eax, dword [edx*4 + 0x460e00]
mov ebx, eax
test cl, 1
je 0x402098
mov eax, ebx
shr eax, 0x10
mov edx, 0xfffa
cmp ax, dx
jb 0x402093
add al, 0x36
jmp 0x4020c0
movzx edi, ax
jmp 0x4020ab
mov eax, 0xfffa
cmp bx, ax
jb 0x4020a8
mov al, bl
add al, 0x3a
jmp 0x4020c0
movzx edi, bx
mov eax, 0xa003c017
imul edi
add edx, edi
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add eax, edx
add al, 0x30
mov dl, 0x2f
sub dl, al
add byte [ecx + esi], dl
mov al, byte [ecx + esi]
cmp al, 0x30
jae 0x4020d3
add al, 0xa
mov byte [ecx + esi], al
lea eax, [esi + 0xff]
inc ecx
lea edi, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4020e0
sub eax, edi
cmp ecx, eax
jb 0x402032
mov al, byte [esi + ebp + 0x11]
mov cl, byte [esi + ebp + 3]
mov byte [esp + 0x12], al
mov eax, esi
mov byte [esp + 0x13], cl
mov byte [esi + ebp + 0x11], 0x37
mov byte [esi + ebp + 3], 0x33
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x402110
sub eax, edx
mov edx, eax
mov ecx, esi
mov eax, 0xffffffff
je 0x40213f
movzx edi, byte [ecx]
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x460e00]
inc ecx
sub edx, 1
jne 0x402124
not eax
mov ebx, eax
shr eax, 0x10
mov edx, 0xfffa
cmp ax, dx
jb 0x402156
add al, 0x36
mov cl, al
jmp 0x402171
movzx ecx, ax
mov eax, 0xa003c017
imul ecx
add edx, ecx
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, eax
add cl, 0x30
mov edx, 0xfffa
mov byte [esi + ebp + 0x11], cl
cmp bx, dx
jb 0x402186
add bl, 0x3a
mov al, bl
jmp 0x40219e
movzx edi, bx
mov eax, 0xa003c017
imul edi
add edx, edi
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add eax, edx
add al, 0x30
mov byte [esi + ebp + 3], al
cmp byte [esp + 0x12], cl
jne 0x4021b5
cmp byte [esp + 0x13], al
jne 0x4021b5
mov byte [esi + 0x900], 1
movzx ecx, byte [esi + ebp + 6]
mov byte [esi + 0x5fa], cl
movzx edx, byte [esi + ebp + 0xe]
mov byte [esi + 0x5fb], dl
movzx eax, byte [esi + ebp + 0xa]
mov byte [esi + 0x5fc], al
movzx ecx, byte [esi + ebp + 9]
lea edi, [esi + 0x5fa]
mov byte [esi + 0x5fd], cl
movzx edx, byte [esi + ebp + 0xc]
mov byte [esi + 0x5fe], dl
movzx eax, byte [esi + ebp + 8]
mov byte [esi + 0x5ff], al
movzx ecx, byte [esi + ebp + 0x12]
mov byte [esi + 0x600], cl
movzx edx, byte [esi + ebp + 4]
mov byte [esi + 0x601], dl
mov byte [esi + 0x602], 0
movzx eax, byte [esi + ebp + 0xf]
mov byte [esi + 0x3fc], al
movzx ecx, byte [esi + ebp + 5]
mov byte [esi + 0x3fd], cl
movzx edx, byte [esi + ebp + 0xb]
mov byte [esi + 0x3fe], dl
mov byte [esi + 0x3ff], 0
movzx eax, byte [esi + ebp + 7]
mov byte [esi + 0x2fd], al
movzx ecx, byte [esi + ebp + 0x13]
mov byte [esi + 0x2fe], cl
movzx edx, byte [esi + ebp + 0xd]
mov byte [esi + 0x2ff], dl
movzx eax, byte [esi + ebp + 0x10]
push 3
mov byte [esi + 0x300], al
lea eax, [esi + 0x1fe]
push esi
push eax
mov byte [esi + 0x301], 0
call fcn.00434950
add esp, 0xc
mov byte [esi + 0x201], 0
test ebp, ebp
jbe 0x4022ae
push ebp
lea ecx, [esi + 3]
push ecx
lea eax, [esi + 0x6f9]
push eax
call fcn.00434950
add esp, 0xc
mov byte [esi + ebp + 0x6f9], 0
lea edx, [esi + 0x4fb]
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x4022b8
call fcn.00401db0
mov edx, 3
lea ecx, [esi + 0x1fe]
or eax, 0xffffffff
movzx edi, byte [ecx]
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x460e00]
inc ecx
sub edx, 1
jne 0x4022d5
lea edx, [esi + 0x4fb]
xor edi, edi
cmp byte [edx], 0
mov ecx, eax
je 0x402326
nop
cmp byte [edi + str.5449099603621109703], 0
jne 0x40230b
xor edi, edi
mov al, byte [edx]
sub al, byte [edi + str.5449099603621109703]
add al, 0x2f
mov byte [edx], al
cmp al, 0x30
jae 0x40231f
add al, 0xa
mov byte [edx], al
inc edx
inc edi
cmp byte [edx], 0
jne 0x402300
lea eax, [esi + 0x4fb]
lea edi, [eax + 1]
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x402330
sub eax, edi
lea ebx, [eax - 1]
lea ebp, [esi + 0x1ff]
mov edx, 2
mov eax, ebp
lea esp, [esp]
movzx edi, byte [eax]
xor edi, ecx
and edi, 0xff
shr ecx, 8
xor ecx, dword [edi*4 + 0x460e00]
inc eax
sub edx, 1
jne 0x402350
test bl, 1
je 0x402388
mov eax, ecx
shr eax, 0x10
mov edx, 0xfffa
cmp ax, dx
jb 0x402383
add al, 0x36
jmp 0x4023b0
movzx edi, ax
jmp 0x40239b
mov eax, 0xfffa
cmp cx, ax
jb 0x402398
mov al, cl
add al, 0x3a
jmp 0x4023b0
movzx edi, cx
mov eax, 0xa003c017
imul edi
add edx, edi
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add eax, edx
add al, 0x30
mov dl, 0x2f
sub dl, al
add byte [esi + ebx + 0x4fb], dl
mov al, byte [esi + ebx + 0x4fb]
cmp al, 0x30
jae 0x4023cf
add al, 0xa
mov byte [esi + ebx + 0x4fb], al
test ebx, ebx
jbe 0x4023f2
movzx eax, byte [esi + ebx + 0x4fb]
xor eax, ecx
and eax, 0xff
shr ecx, 8
xor ecx, dword [eax*4 + 0x460e00]
dec ebx
jmp 0x402342
cmp dword [esi + 0x8f8], 0
pop ebx
je 0x4024a1
call fcn.00401db0
mov edx, dword [esi + 0x8fc]
mov ecx, dword [esi + 0x8f8]
or eax, 0xffffffff
test edx, edx
jbe 0x40243b
jmp 0x402420
movzx edi, byte [ecx]
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x460e00]
inc ecx
sub edx, 1
jne 0x402420
not eax
mov ecx, eax
shr eax, 0x10
mov edx, 0xfffa
cmp ax, dx
jb 0x402450
add al, 0x36
jmp 0x402468
movzx edi, ax
mov eax, 0xa003c017
imul edi
add edx, edi
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add eax, edx
add al, 0x30
cmp al, byte [esi + 0x3fd]
jne 0x4024a8
mov edx, 0xfffa
cmp cx, dx
jb 0x402481
add cl, 0x3a
mov al, cl
jmp 0x402499
movzx ecx, cx
mov eax, 0xa003c017
imul ecx
add edx, ecx
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add eax, edx
add al, 0x30
cmp al, byte [esi + 0x3fe]
jne 0x4024a8
mov byte [esi + 0x901], 1
pop edi
pop ebp
pop esi
pop ecx
ret