Function at 0x40d520
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, dword [0x465794]
mov eax, 0x9d264684
shl ecx, 0xa
sub eax, ecx
cmp eax, 0x7e7ac4eb
jg 0x40d54f
movzx eax, word [0x472eb0]
xor eax, 0xf8505d88
mov word [0x472eb0], ax
jmp 0x40d559
add dword [0x4604ec], 0x2b991ff5
mov eax, dword [0x45ffdc]
inc dword [0x45ffdc]
cmp eax, 0xce21ad7b
jl 0x40d5b8
dec word [0x47570c]
mov ax, word [0x47570c]
cwde
add eax, dword [0x461b44]
dec dword [0x461b44]
cmp eax, 0xf6d3aa60
jg 0x40d5ae
inc dword [0x46e674]
mov eax, dword [0x46e674]
movsx ecx, word [0x470f34]
add ecx, eax
or ecx, 0xa92c8e73
and dword [0x45f738], ecx
jmp 0x40d5b8
mov eax, dword [0x4661c4]
mov eax, dword [0x46815c]
xor dword [0x45d550], 0x46907ca
or dword [0x46f560], 0x669bde04
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
lea eax, [ebx + 4]
push eax
call fcn.0042e2ed
mov edi, dword [ebp + 8]
mov esi, eax
movsx eax, word [0x47bf74]
add esp, 4
not eax
mov dword [ebp - 4], esi
and eax, 0x471c4e28
mov dword [0x45eba8], eax
add dword [0x45a0cc], 0x3b150d5a
mov eax, dword [0x46cef8]
shl eax, 6
xor eax, 0xffc9c24f
and dword [0x463d54], eax
movzx eax, byte [edi + section..data]
mov byte [esi], al
movzx eax, word [0x47adca]
add eax, 0x34ea6782
mov word [0x47adca], ax
mov eax, dword [0x47c784]
movzx eax, byte [eax + edi]
xor byte [esi], al
mov ecx, dword [0x45cc30]
mov eax, dword [0x45f0e8]
dec dword [0x45f0e8]
and eax, 0xf6a0113c
sar ecx, 4
or ecx, 0x6ad56765
cmp ecx, eax
jne 0x40d66b
or dword [0x45ad30], 0x1ae1a9e9
jmp 0x40d680
mov eax, dword [0x45a17c]
xor eax, 0xfc8d8ada
mov dword [0x461afc], eax
inc dword [0x45a17c]
add dword [0x465498], 0x48088b40
movsx eax, word [0x47b3da]
inc word [0x47b3da]
xor eax, 0x562b5c03
cmp eax, 0x764362de
jl 0x40d6cc
movsx ecx, word [0x478a9e]
mov eax, dword [0x468000]
not ecx
not eax
and eax, ecx
xor eax, 0x3855728d
cmp eax, 0xcb4ae963
je 0x40d6cc
xor dword [0x45dccc], 0x709e450a
movzx eax, byte [edi + 0x452001]
mov ecx, 0x9c602e17
mov byte [esi + 1], al
mov eax, dword [0x47c784]
mov dword [0x45b20c], 0x9c4f5945
movzx eax, byte [eax + edi + 1]
add edi, 2
xor byte [esi + 1], al
movzx eax, word [0x47a616]
or eax, 0x7532a1bf
mov word [0x47a616], ax
mov eax, dword [0x46d154]
sub ecx, eax
add dword [0x45b6e4], ecx
movsx ecx, word [0x474742]
movsx eax, word [0x474778]
and ecx, 0xbffeffff
dec word [0x474742]
or ecx, 0x25a4c7c3
and eax, 0x33def8b7
cmp eax, ecx
jle 0x40d765
mov ax, word [0x47ac9a]
mov ecx, dword [0x459e80]
cwde
sub ecx, eax
and ecx, 0x4d63f304
cmp ecx, 0x180300c
jle 0x40d765
xor dword [0x462264], 0xf9ee5f5b
movzx eax, word [esi]
add dword [0x45f768], 0xce61a6ca
mov dword [ebp + 0xc], eax
add eax, 3
push eax
lea eax, [edi + section..data]
push eax
push esi
call fcn.0042a040
mov ecx, dword [0x4587b8]
add esp, 0xc
movsx eax, word [0x4768c0]
mov edx, dword [ebp + 0xc]
sar ecx, 4
add edx, 3
or eax, ecx
add edx, esi
xor dword [0x46ff70], eax
mov eax, dword [0x466460]
xor eax, dword [0x463248]
xor eax, 0x8125690a
mov dword [0x463248], eax
inc dword [0x466460]
movzx eax, word [0x47b1ee]
mov ecx, dword [0x47c784]
add eax, 0x4ce76200
add ecx, edi
mov word [0x47b1ee], ax
mov dword [0x45fa04], 0x4c445f41
cmp esi, edx
je 0x40d819
sub ecx, esi
mov edi, edi
mov eax, dword [0x46ed08]
or eax, dword [0x462c68]
mov dword [0x46ed08], eax
mov al, byte [ecx + esi]
xor byte [esi], al
inc esi
imul eax, dword [0x4670ec], 0xa894401
mov dword [0x4670ec], eax
cmp esi, edx
jne 0x40d7f0
inc dword [0x45cf60]
mov ecx, dword [0x45cf60]
mov eax, dword [0x45841c]
add ecx, 0x51c9934e
not eax
xor ecx, eax
mov dword [0x46cf48], ecx
cmp ebx, dword [ebp + 0xc]
je 0x40d8d4
movzx eax, word [0x473166]
imul eax, eax, 0x5e824351
mov word [0x473166], ax
mov byte [edx], 0
add dword [0x45f398], 0xf6d7bfe0
movsx eax, word [0x47ac00]
mov ecx, dword [0x46a17c]
not eax
imul ecx, eax
movsx eax, word [0x470716]
sub ecx, eax
or dword [0x4579e4], ecx
dec word [0x470716]
mov eax, dword [0x4653b8]
mov edi, dword [edx - 3]
sub eax, 0x866723c
and eax, 0xdcf8cf51
cmp eax, 0xc7491691
jne 0x40d8af
mov eax, 0xfffff828
mov word [0x47709c], ax
mov eax, dword [0x463cb0]
lea esi, [edx - 3]
and eax, dword [0x45e240]
sub ebx, dword [ebp + 0xc]
mov dword [0x463cb0], eax
xor dword [0x4686e0], 0x3a92ad85
jmp 0x40d603
imul ecx, dword [0x4615ec], 0xaaf8edce
mov eax, dword [ebp - 4]
pop edi
pop esi
pop ebx
mov dword [0x4615ec], ecx
mov esp, ebp
pop ebp
ret