Function at 0x40a110
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xe8
cmp dword [ecx + 0x20], 0
je 0x40a15e
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0x2b], 0
test eax, eax
je 0x40a165
cmp al, 0x64
jb 0x40a174
lea ecx, [eax + eax*4]
lea edx, [eax + ecx*8]
shr edx, 0xc
imul ecx, edx, 0x64
sub al, cl
movzx eax, al
movzx eax, word [eax + eax + 0x444520]
mov word [esp + 0x29], ax
mov ecx, 0xfffffffd
mov eax, edx
jmp 0x40a17d
mov bl, 1
jmp 0x40ab10
lea eax, [esp + 0x2a]
mov dword [esp + 0x24], eax
mov byte [esp + 0x2a], 0x30
jmp 0x40a1aa
mov ecx, 0xffffffff
cmp al, 9
ja 0x40a195
lea edx, [esp + 0x2c]
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
add edx, ecx
dec edx
mov dword [esp + 0x24], edx
mov byte [esp + ecx + 0x2b], al
jmp 0x40a1aa
movzx eax, word [eax + eax + 0x444520]
lea ecx, [esp + 0x29]
mov dword [esp + 0x24], ecx
mov word [esp + 0x29], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406c60
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xbc], eax
lea eax, [esp + 0xc3]
push eax
call fcn.00438320
add esp, 4
mov dword [esp + 0x2c], edi
lea eax, [edi + 0x400]
push eax
call fcn.00408d90
add esp, 4
mov edi, eax
mov dword [esp + 0x30], 0x97aba6a8
mov byte [esp + 0x34], 0x34
mov dword [esp + 0x35], 0
mov byte [esp + 0x39], 0
mov dword [esp + 8], 0xf327e720
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x30], al
movzx eax, byte [esp + 0x31]
xor eax, 0xf327e789
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x31], al
movzx eax, byte [esp + 0x32]
xor eax, 0xf327e78a
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x32], al
movzx eax, byte [esp + 0x33]
xor eax, 0xf327e78b
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x33], al
movzx eax, byte [esp + 0x34]
xor eax, 0xf327e78c
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x34], al
movzx eax, byte [esp + 0x35]
xor eax, 0xf327e78d
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x35], al
movzx eax, byte [esp + 0x36]
xor eax, 0xf327e78e
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x36], al
movzx eax, byte [esp + 0x37]
xor eax, 0xf327e78f
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x37], al
movzx eax, byte [esp + 0x38]
xor eax, 0xf327e790
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x38], al
movzx eax, byte [esp + 0x39]
xor eax, 0xf327e791
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x48
mov byte [esp + 0x39], al
lea ebx, [esp + 0x30]
mov ecx, esi
lea eax, [esp + 0xc3]
push eax
push ebx
push edi
call fcn.004099d0
mov dword [esp + 0x30], 0x73d6c4dc
mov dword [esp + 0x34], 0
mov dword [esp + 0x37], 0
mov dword [esp + 8], 0x13041292
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x30], al
movzx eax, byte [esp + 0x31]
mov ecx, eax
and ecx, 0x4f
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x1304124f
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x31], al
movzx eax, byte [esp + 0x32]
mov ecx, eax
and ecx, 0x50
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041250
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x32], al
movzx eax, byte [esp + 0x33]
mov ecx, eax
and ecx, 0x51
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041251
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x33], al
movzx eax, byte [esp + 0x34]
mov ecx, eax
and ecx, 0x52
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041252
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x34], al
movzx eax, byte [esp + 0x35]
mov ecx, eax
and ecx, 0x53
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041253
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x35], al
movzx eax, byte [esp + 0x36]
mov ecx, eax
and ecx, 0x54
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041254
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x36], al
movzx eax, byte [esp + 0x37]
mov ecx, eax
and ecx, 0x55
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041255
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x37], al
movzx eax, byte [esp + 0x38]
mov ecx, eax
and ecx, 0x56
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041256
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x38], al
movzx eax, byte [esp + 0x39]
mov ecx, eax
and ecx, 0x57
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041257
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x39], al
movzx eax, byte [esp + 0x3a]
mov ecx, eax
and ecx, 0x58
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0x13041258
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xde
mov byte [esp + 0x3a], al
mov ecx, esi
push dword [esp + 0x24]
push ebx
push edi
call fcn.004099d0
mov eax, dword [str.tLYMe5__n12]
mov dword [esp + 0x30], 0xebb0aaaa
mov dword [esp + 0x34], 0
mov byte [esp + 0x38], 0
mov dword [esp + 8], 0xc9404cf7
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x30], cl
movzx ecx, byte [esp + 0x31]
mov edx, ecx
and edx, 0x5e
add edx, edx
neg edx
add ecx, edx
add ecx, 0xc9404c5e
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x31], cl
movzx ecx, byte [esp + 0x32]
mov edx, ecx
and edx, 0x5f
add edx, edx
neg edx
add ecx, edx
add ecx, 0xc9404c5f
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x32], cl
movzx ecx, byte [esp + 0x33]
mov edx, ecx
and edx, 0x60
add edx, edx
neg edx
add ecx, edx
add ecx, 0xc9404c60
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x33], cl
movzx ecx, byte [esp + 0x34]
mov edx, ecx
and edx, 0x61
add edx, edx
neg edx
add ecx, edx
add ecx, 0xc9404c61
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x34], cl
movzx ecx, byte [esp + 0x35]
mov edx, ecx
and edx, 0x62
add edx, edx
neg edx
add ecx, edx
add ecx, 0xc9404c62
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x35], cl
movzx ecx, byte [esp + 0x36]
mov edx, ecx
and edx, 0x63
add edx, edx
neg edx
add ecx, edx
add ecx, 0xc9404c63
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x36], cl
movzx ecx, byte [esp + 0x37]
mov edx, ecx
and edx, 0x64
add edx, edx
neg edx
add ecx, edx
add ecx, 0xc9404c64
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x37], cl
movzx ecx, byte [esp + 0x38]
mov edx, ecx
and edx, 0x65
add edx, edx
neg edx
add ecx, edx
add ecx, 0xc9404c65
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [esp + 0x38], cl
mov ecx, esi
push eax
push ebx
mov dword [esp + 0x2c], edi
push edi
call fcn.004099d0
mov dword [esp + 0x30], 0x8fa6aea3
mov dword [esp + 0x34], 0x9a939a8b
mov dword [esp + 0x38], 0x98958a9b
mov byte [esp + 0x3c], 0xe2
mov dword [esp + 0x3d], 0
mov dword [esp + 0x41], 0
mov byte [esp + 0x45], 0
mov eax, 0xba228fa2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebx]
lea ecx, [edx + edx]
not ecx
add ecx, edx
not edx
and edx, ecx
or edx, eax
and ecx, eax
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov byte [ebx], cl
inc ebx
dec eax
cmp eax, 0xba228f8c
jne 0x40a640
mov dword [esp + 8], 0x73c6cacd
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0x5ee70443
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add al, 0x1d
mov byte [esp + 8], al
movzx eax, byte [esp + 9]
lea ecx, [eax + eax]
and ecx, 0x11e
neg ecx
add eax, ecx
add eax, 0x5ee7048f
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add al, 0x1d
mov byte [esp + 9], al
movzx eax, byte [esp + 0xa]
lea ecx, [eax + eax]
and ecx, 0x120
neg ecx
add eax, ecx
add eax, 0x5ee70490
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add al, 0x1d
mov byte [esp + 0xa], al
movzx eax, byte [esp + 0xb]
lea ecx, [eax + eax]
and ecx, 0x122
neg ecx
add eax, ecx
add eax, 0x5ee70491
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add al, 0x1d
mov byte [esp + 0xb], al
movzx eax, byte [esp + 0xc]
lea ecx, [eax + eax]
and ecx, 0x124
neg ecx
add eax, ecx
add eax, 0x5ee70492
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add al, 0x1d
mov byte [esp + 0xc], al
movzx eax, byte [esp + 0xd]
lea ecx, [eax + eax]
and ecx, 0x126
neg ecx
add eax, ecx
add eax, 0x5ee70493
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add al, 0x1d
mov byte [esp + 0xd], al
movzx eax, byte [esp + 0xe]
lea ecx, [eax + eax]
and ecx, 0x128
neg ecx
add eax, ecx
add eax, 0x5ee70494
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add al, 0x1d
mov byte [esp + 0xe], al
movzx eax, byte [esp + 0xf]
lea ecx, [eax + eax]
and ecx, 0x12a
neg ecx
add eax, ecx
add eax, 0x5ee70495
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
add al, 0x1d
mov byte [esp + 0xf], al
lea ebx, [esp + 0x30]
lea eax, [esp + 8]
mov ecx, esi
push ebx
push eax
push dword [esp + 0x2c]
call fcn.004099d0
mov dword [esp + 0x30], 0x162e2816
mov byte [esp + 0x34], 0xb4
mov dword [esp + 0x35], 0
mov dword [esp + 0x39], 0
mov dword [esp + 0x3c], 0
mov eax, 0x2adf54b7
mov ecx, 0x48
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x18]
mov edi, eax
or edi, edx
not edx
or edx, ecx
and edx, edi
not edx
mov dword [esp + 8], edx
mov edx, dword [esp + 8]
add edx, 0x2bad960d
mov edi, edx
and edi, 0x2c7a09b6
xor edx, 0x2c7a09b6
lea edx, [edx + edi*2]
add edx, 0x2c1b5108
mov edi, edx
and edi, 0x3d
xor edx, 0x3d
lea edx, [edx + edi*2]
mov byte [esp + ecx - 0x18], dl
dec eax
inc ecx
cmp ecx, 0x58
jne 0x40a830
mov ecx, esi
push dword [esp + 0x2c]
push dword [esp + 0xc0]
push ebx
push dword [esp + 0x30]
call fcn.00409cb0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], 0x6bf96d13
mov dword [esp + 0x34], 0x67ea69fa
mov dword [esp + 0x38], 0x63f065f9
mov dword [esp + 0x3c], 0x9fcb61ec
mov dword [esp + 0x40], 0x9b139df0
mov dword [esp + 0x44], 0x970b9908
mov dword [esp + 0x48], 0x93b295d2
mov dword [esp + 0x4c], 0x8f039105
mov dword [esp + 0x50], 0x8b068d18
mov dword [esp + 0x54], 0x87168911
mov dword [esp + 0x58], 0x830c85e5
mov dword [esp + 0x5c], 0xbfed810c
mov dword [esp + 0x60], 0xbb29bd26
mov dword [esp + 0x64], 0xb723b936
mov dword [esp + 0x68], 0xb32eb5e1
mov dword [esp + 0x6c], 0xaf22b1d1
mov dword [esp + 0x70], 0xabedadcd
mov dword [esp + 0x74], 0xa738a988
mov dword [esp + 0x78], 0xa32fa537
mov dword [esp + 0x7c], 0xdf42a132
mov dword [esp + 0x80], 0xdb54ddbd
mov dword [esp + 0x84], 0xd793d951
mov dword [esp + 0x88], 0xd34fd54a
mov dword [esp + 0x8c], 0xcf83d198
mov dword [esp + 0x90], 0xcb57cd50
mov dword [esp + 0x94], 0xc75fc985
mov dword [esp + 0x98], 0xc35ec554
mov dword [esp + 0x9c], 0xff61c153
mov dword [esp + 0xa0], 0xfb67fd65
mov dword [esp + 0xa4], 0xf778f976
mov dword [esp + 0xa8], 0xf3a3f569
mov dword [esp + 0xac], 0xefd8f1c5
mov word [esp + 0xb0], 0xedec
mov word [esp + 0xb6], 0
mov dword [esp + 0xb2], 0
xor ecx, ecx
nop
movzx edi, byte [esp + ecx + 0x30]
mov eax, ecx
and eax, 0x8e
xor eax, 0x5e17088e
mov edx, ecx
and edx, 0x71
sub edx, eax
lea eax, [edi + edi]
mov ebx, eax
and eax, 0x7c
neg eax
add eax, edi
add eax, 0xbe
and eax, edi
xor edi, 0x16b6be26
and ebx, 0xffffffb2
sub edi, ebx
add edi, 0x94941d9
and edi, 0x17347cbe
or eax, edi
xor eax, edx
xor eax, 0x17347cbe
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
mov edx, 0x1e
sub edx, eax
not eax
and eax, 1
or edx, 1
sub eax, edx
mov byte [esp + ecx + 0x30], al
inc ecx
cmp ecx, 0x88
jne 0x40a9e0
mov dword [esp + 8], 0x6303614f
mov dword [esp + 0xc], 0x670f65f4
mov word [esp + 0x10], 0x6968
mov dword [esp + 0x12], 0
mov dword [esp + 0x16], 0
mov dword [esp + 0x1a], 0
mov word [esp + 0x1e], 0
mov ecx, 0xc4ea6df0
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 0x3b159218]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x70
mov byte [esp + ecx + 0x3b159218], al
movzx eax, byte [esp + ecx + 0x3b159219]
lea edx, [ecx + 1]
xor edx, eax
mov dword [esp + 4], edx
mov eax, dword [esp + 4]
add al, 0x70
mov byte [esp + ecx + 0x3b159219], al
add ecx, 2
cmp ecx, 0xc4ea6e08
jne 0x40aa90
push 0x493e0
push dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
push edi
push 0
push 0
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.0040cd70
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408da0
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret