Function at 0x40e120
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x27c
mov eax, 4
imul ecx, eax, 0x213a
mov edx, dword [ecx + 0x497c50]
sub edx, 1
mov dword [ebp - 0x14], edx
mov eax, 4
imul ecx, eax, 0x213a
mov edx, dword [ebp - 0x14]
mov dword [ecx + 0x497c50], edx
cmp dword [ebp - 0x14], 0x428e6c07
je 0x40e185
mov eax, 4
imul ecx, eax, 0x430
imul edx, dword [ecx + 0x497c50], 0x200a0008
mov eax, 4
imul ecx, eax, 0x430
mov dword [ecx + 0x497c50], edx
jmp 0x40e1ab
mov edx, 4
imul eax, edx, 0xf67
imul ecx, dword [eax + 0x497c50], 0xd0bff077
mov edx, 4
imul eax, edx, 0xf67
mov dword [eax + 0x497c50], ecx
cmp dword [0x4907fc], 0
je 0x40e1b9
jmp 0x40e8a5
mov ecx, 4
imul edx, ecx, 0x1503
cmp dword [edx + 0x497c50], 0xd60c0d70
jg 0x40e1e5
mov eax, 4
imul ecx, eax, 0x1b1
mov dword [ecx + 0x497c50], 0xc0a0900
mov edx, 4
imul eax, edx, 0x2a34
mov ecx, 2
imul edx, ecx, 0x14f
movsx ecx, word [edx + 0x490a20]
mov edx, dword [eax + 0x497c50]
or edx, ecx
mov eax, 4
imul ecx, eax, 0x2a34
mov dword [ecx + 0x497c50], edx
mov edx, 4
imul eax, edx, 0x23c7
mov ecx, dword [eax + 0x497c50]
and ecx, 0x8f71ea2c
mov edx, 4
imul eax, edx, 0x12d6
mov dword [eax + 0x497c50], ecx
mov ecx, 4
imul edx, ecx, 0x23c7
mov eax, dword [edx + 0x497c50]
add eax, 1
mov ecx, 4
imul edx, ecx, 0x23c7
mov dword [edx + 0x497c50], eax
mov eax, 4
imul ecx, eax, 0x3515
mov edx, dword [ecx + 0x497c50]
xor edx, 0x400880
mov eax, 4
imul ecx, eax, 0x3515
mov dword [ecx + 0x497c50], edx
mov edx, 2
imul eax, edx, 0xc5b
movsx ecx, word [eax + 0x490a20]
imul edx, ecx, 0xc78242f
mov eax, 2
imul ecx, eax, 0xc5b
mov word [ecx + 0x490a20], dx
lea edx, [ebp - 0x13c]
push edx
push 0x104
call fcn.00443860
add esp, 8
mov eax, 4
imul ecx, eax, 0x207a
mov edx, dword [ecx + 0x497c50]
sub edx, 1
mov dword [ebp - 0x10], edx
mov eax, 4
imul ecx, eax, 0x207a
mov edx, dword [ebp - 0x10]
mov dword [ecx + 0x497c50], edx
mov eax, 0xb123fd48
sub eax, dword [ebp - 0x10]
xor eax, 0xdfce0031
mov ecx, 4
imul edx, ecx, 0x3aa
mov ecx, dword [edx + 0x497c50]
imul ecx, eax
mov edx, 4
imul eax, edx, 0x3aa
mov dword [eax + 0x497c50], ecx
lea ecx, [ebp - 0x13c]
push ecx
call fcn.00465d40
add esp, 4
mov dword [ebp - 0xc], eax
mov edx, 4
imul eax, edx, 0x22f6
mov ecx, dword [eax + 0x497c50]
add ecx, 1
mov dword [ebp - 0x1c], ecx
mov edx, 4
imul eax, edx, 0x22f6
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 0x497c50], ecx
cmp dword [ebp - 0x1c], 0x8a4cff20
jg 0x40e39b
mov edx, 2
imul eax, edx, 0x7ff
movsx ecx, word [eax + 0x490a20]
or ecx, 0xfff3cfde
mov edx, 2
imul eax, edx, 0x7ff
mov word [eax + 0x490a20], cx
push 0x3e8
call dword [0x490994]
mov ecx, 4
imul edx, ecx, 0x49f
mov eax, dword [edx + 0x497c50]
sub eax, 0x14b9dd73
mov ecx, 4
imul edx, ecx, 0x49f
mov dword [edx + 0x497c50], eax
mov eax, dword [ebp - 0xc]
mov byte [ebp + eax - 0x13c], 0
mov ecx, 4
imul edx, ecx, 0x17ba
mov eax, 4
imul ecx, eax, 0x1ff9
mov eax, dword [ecx + 0x497c50]
or eax, 0x8020
mov ecx, dword [edx + 0x497c50]
imul ecx, eax
mov edx, 4
imul eax, edx, 0x17ba
mov dword [eax + 0x497c50], ecx
mov ecx, dword [0x490818]
push ecx
lea edx, [ebp - 0x13c]
push edx
call fcn.00465bc0
add esp, 8
mov eax, 4
imul ecx, eax, 0x1bcf
mov dword [ecx + 0x497c50], 0x7e3561b3
push 2
push 0x2a94
call fcn.004465d0
add esp, 8
mov dword [ebp - 0x18], eax
mov edx, 4
imul eax, edx, 0x2589
mov ecx, dword [eax + 0x497c50]
and ecx, 0xe28c5cf
mov edx, 4
imul eax, edx, 0x2589
mov dword [eax + 0x497c50], ecx
mov ecx, dword [ebp - 0x18]
push ecx
lea edx, [ebp - 0x13c]
push edx
call fcn.00465bc0
add esp, 8
mov eax, 4
imul ecx, eax, 0xa0a
imul edx, dword [ecx + 0x497c50], 0x274aa02e
mov eax, 4
imul ecx, eax, 0xa0a
mov dword [ecx + 0x497c50], edx
mov edx, dword [ebp - 0x18]
push edx
push 2
call fcn.004479c0
add esp, 8
mov eax, 4
imul ecx, eax, 0x1fac
mov edx, dword [ecx + 0x497c50]
add edx, 1
mov dword [ebp - 8], edx
mov eax, 4
imul ecx, eax, 0x1fac
mov edx, dword [ebp - 8]
mov dword [ecx + 0x497c50], edx
mov eax, dword [ebp - 8]
xor eax, 0x36ce2fff
or eax, 0xf4a691e0
mov ecx, 4
imul edx, ecx, 0x2a4b
mov dword [edx + 0x497c50], eax
lea eax, [ebp - 0x27c]
push eax
lea ecx, [ebp - 0x13c]
push ecx
call dword [0x4908ec]
mov dword [ebp - 4], eax
mov edx, 4
imul eax, edx, 0x1d4f
mov ecx, dword [eax + 0x497c50]
add ecx, 0x1328c0c6
mov edx, 4
imul eax, edx, 0x1d4f
mov dword [eax + 0x497c50], ecx
cmp dword [ebp - 4], 0xffffffff
je 0x40e822
mov ecx, 4
imul edx, ecx, 0x1bf1
mov eax, dword [edx + 0x497c50]
add eax, 0x52977362
mov ecx, 4
imul edx, ecx, 0x1bf1
mov dword [edx + 0x497c50], eax
mov eax, 2
imul ecx, eax, 0x1aa
movsx edx, word [ecx + 0x490a20]
and edx, 0xa8bbbbd5
mov eax, 2
imul ecx, eax, 0x1aa
mov word [ecx + 0x490a20], dx
mov edx, dword [ebp - 0xc]
mov byte [ebp + edx - 0x13c], 0
mov eax, 4
imul ecx, eax, 0xf27
mov edx, 2
imul eax, edx, 0x83e
movsx edx, word [eax + 0x490a20]
or edx, 0x156fb8c7
mov eax, 4
imul eax, eax, 0x371
or edx, dword [eax + 0x497c50]
mov ecx, dword [ecx + 0x497c50]
sub ecx, edx
mov edx, 4
imul eax, edx, 0xf27
mov dword [eax + 0x497c50], ecx
mov ecx, 4
imul edx, ecx, 0x371
mov eax, dword [edx + 0x497c50]
add eax, 1
mov ecx, 4
imul edx, ecx, 0x371
mov dword [edx + 0x497c50], eax
mov eax, 2
imul ecx, eax, 0x83e
mov dx, word [ecx + 0x490a20]
sub dx, 1
mov eax, 2
imul ecx, eax, 0x83e
mov word [ecx + 0x490a20], dx
lea edx, [ebp - 0x250]
push edx
lea eax, [ebp - 0x13c]
push eax
call fcn.00465bc0
add esp, 8
mov ecx, 4
imul edx, ecx, 0x2f3
mov eax, dword [edx + 0x497c50]
or eax, 0xf7c01269
mov ecx, 4
imul edx, ecx, 0x2f3
mov dword [edx + 0x497c50], eax
lea eax, [ebp - 0x13c]
push eax
call dword [0x4908dc]
mov ecx, 4
imul edx, ecx, 0x2a28
mov eax, 2
imul ecx, eax, 0x177f
movsx eax, word [ecx + 0x490a20]
add eax, 0x6b2a0871
xor eax, 0x89bcf07f
mov ecx, dword [edx + 0x497c50]
sub ecx, eax
mov edx, 4
imul eax, edx, 0x2a28
mov dword [eax + 0x497c50], ecx
lea ecx, [ebp - 0x27c]
push ecx
mov edx, dword [ebp - 4]
push edx
call dword [0x4908e8]
test eax, eax
jne 0x40e578
mov eax, 4
imul ecx, eax, 0x1ac
mov edx, 2
imul eax, edx, 0x189b
movsx edx, word [eax + 0x490a20]
mov eax, dword [ecx + 0x497c50]
imul eax, edx
mov dword [ebp - 0x20], eax
mov ecx, 2
imul edx, ecx, 0xdf0
movsx eax, word [edx + 0x490a20]
mov ecx, 4
imul edx, ecx, 0x9d0
mov ecx, dword [edx + 0x497c50]
and ecx, eax
mov dword [ebp - 0x24], ecx
mov edx, 2
imul eax, edx, 0xdf0
mov cx, word [eax + 0x490a20]
sub cx, 1
mov edx, 2
imul eax, edx, 0xdf0
mov word [eax + 0x490a20], cx
mov ecx, 4
imul edx, ecx, 0x9d0
mov eax, dword [edx + 0x497c50]
add eax, 1
mov ecx, 4
imul edx, ecx, 0x9d0
mov dword [edx + 0x497c50], eax
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x24]
jne 0x40e7b9
mov ecx, 4
imul edx, ecx, 0xb7e
mov eax, dword [edx + 0x497c50]
sub eax, 0x5a775cab
mov ecx, 4
imul edx, ecx, 0xb7e
mov dword [edx + 0x497c50], eax
jmp 0x40e7e3
mov eax, 2
imul ecx, eax, 0x2c81
movsx edx, word [ecx + 0x490a20]
sub edx, 0x4241208
mov eax, 2
imul ecx, eax, 0x2c81
mov word [ecx + 0x490a20], dx
mov edx, dword [ebp - 4]
push edx
call dword [0x4908e4]
mov eax, 2
imul ecx, eax, 0x3771
mov edx, 4
imul eax, edx, 0x267f
movsx ecx, word [ecx + 0x490a20]
xor ecx, dword [eax + 0x497c50]
mov edx, 2
imul eax, edx, 0x3771
mov word [eax + 0x490a20], cx
mov ecx, 4
imul edx, ecx, 0x37e5
imul eax, dword [edx + 0x497c50], 0xc638e689
mov ecx, 4
imul edx, ecx, 0x37e5
mov dword [edx + 0x497c50], eax
push 0x118
push 0
lea eax, [ebp - 0x13c]
push eax
call fcn.00465b20
add esp, 0xc
mov ecx, 2
imul edx, ecx, 0x22dc
mov eax, 2
imul ecx, eax, 0x27b9
movsx eax, word [ecx + 0x490a20]
shl eax, 2
imul ecx, eax, 0x1f71d19b
sub ecx, 0x6413d7c0
movsx edx, word [edx + 0x490a20]
and edx, ecx
mov eax, 2
imul ecx, eax, 0x22dc
mov word [ecx + 0x490a20], dx
mov esp, ebp
pop ebp
ret