Function at 0x41f031
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x4c
mov eax, dword [0x466ffc]
xor edx, edx
push ebx
mov bl, byte [esp + 0x58]
mov bh, byte [esp + 0x54]
movzx ecx, word [eax + 0x19d8]
movzx eax, byte [0x466fc5]
add ecx, eax
mov byte [esp + 6], 0xee
mov eax, dword [0x466fd8]
or eax, 0x585
mov dword [esp + 0x30], ecx
dec dword [0x466fc8]
mov dword [esp + 0x4c], eax
mov eax, dword [0x466fbc]
push ebp
push esi
movzx esi, bl
inc bl
movzx ecx, bl
inc bl
movzx ebp, bh
mov dword [esp + 0x28], ecx
push edi
mov al, byte [eax + ecx*8]
mov byte [esp + 0x13], al
mov eax, 0x10c6
div ebp
xor edx, edx
movzx ecx, word [0x466fcc]
mov dword [esp + 0x24], eax
movzx eax, bl
sub eax, dword [0x466fac]
mov dword [esp + 0x40], eax
mov eax, dword [0x466fb8]
mov dword [esp + 0x28], eax
mov eax, dword [0x466fec]
mov dword [esp + 0x38], eax
div dword [0x466fa8]
mov edi, dword [0x466fc0]
movzx edx, cx
mov dword [esp + 0x14], ecx
mov ecx, dword [0x466ff8]
mov dword [esp + 0x18], eax
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x54], ebp
movzx eax, word [ecx + edx*2]
movzx ecx, byte [0x466fc4]
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], edi
mov byte [esp + 0x64], bl
mov dword [esp + 0x50], edi
mov dword [esp + 0x1c], 0x340
mov dword [esp + 0x30], eax
cmp eax, ecx
jge 0x41f257
mov ebp, dword [esp + 0x14]
lea ecx, [eax*2 + 0xe]
mov bh, byte [esp + 0x12]
mov bl, byte [esp + 0x13]
imul eax, eax, 0xc
mov dword [esp + 0x20], ecx
add eax, 0x14
add eax, esi
mov dword [esp + 0x34], eax
xor edx, edx
movzx esi, bh
movzx ecx, bl
mov eax, esi
div ecx
xor edx, edx
mov ecx, dword [esp + 0x38]
div dword [0x466fdc]
or ecx, dword [0x466ff0]
add ebp, 0xffff
mov dword [0x466fdc], eax
mov eax, dword [0x466ff8]
xor word [eax + edi*2 + 6], cx
movzx edi, bp
mov eax, edi
mov ecx, dword [0x466fac]
cdq
idiv dword [edi*4 + 0x280]
mov edx, dword [esp + 0x40]
movzx ecx, byte [edx + ecx*2]
sub eax, ecx
mov ecx, dword [0x466ffc]
cdq
idiv dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, esi
mov esi, dword [esp + 0x30]
cdq
idiv esi
mov eax, dword [esp + 0x2c]
or dx, word [eax + edi*2]
or dx, word [0x466fb4]
mov eax, dword [esp + 0x20]
add dword [esp + 0x20], 2
and word [eax + ecx], dx
mov eax, edi
cdq
inc bh
idiv dword [0x466fcc]
mov ecx, dword [esp + 0x44]
xor edx, edx
xor eax, dword [0x466fa8]
mov dword [ecx + esi*4], eax
mov eax, dword [0x466fcc]
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x2c]
add eax, 0x11d9
movzx ecx, word [ecx + edi*4]
mov edi, 0x9bd
div ecx
mov ecx, dword [0x466ffc]
mov bl, dl
mov edx, dword [esp + 0x34]
mov ax, word [edx]
add edx, 0xc
or ax, si
mov dword [esp + 0x34], edx
add ax, di
or word [ecx + esi*4], ax
or dword [0x466fa8], 0x7de
inc esi
movzx eax, byte [0x466fc4]
mov edi, dword [0x466fc0]
mov dword [esp + 0x30], esi
cmp esi, eax
jge 0x41f247
mov eax, dword [0x466fec]
mov dword [esp + 0x38], eax
jmp 0x41f13b
mov bl, byte [esp + 0x64]
mov bh, byte [esp + 0x60]
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax]
mov esi, dword [ecx + eax*4]
cmp esi, 0x328
jle 0x41f2f0
mov eax, dword [0x467004]
xor eax, esi
xor eax, 0x1750
cdq
idiv dword [edi*4 + 0x280]
sub eax, dword [esp + 0x14]
movzx edi, ax
mov eax, esi
or eax, 0xf3e
mov dword [esp + 0x14], edi
xor eax, ebp
cdq
idiv dword [esp + 0x1c]
mov edx, dword [esp + 0x3c]
dec bh
movzx ebp, bh
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
mov ecx, dword [ecx + ebp*4]
or ecx, ebp
and dword [eax + esi*8], ecx
mov ecx, 0x1e4b
mov eax, dword [esp + 0x24]
sub ecx, dword [eax + esi*4]
mov eax, ebp
add dword [0x467004], ecx
xor eax, esi
movzx ecx, di
add ecx, ecx
sub eax, dword [edx + ecx*8]
mov edx, dword [esp + 0x54]
xor dword [edx + ecx*8], eax
inc esi
cmp esi, 0x328
jle 0x41f2f4
mov edi, dword [0x466fc0]
mov ecx, dword [esp + 0x18]
jmp 0x41f270
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x58]
mov eax, dword [esp + 0x24]
movzx edx, di
movzx ecx, byte [edx + ebp]
sub ecx, dword [eax + 0x2740]
mov eax, dword [0x466fe0]
add eax, 0x1c1b
add eax, ecx
mov ecx, 0x138a
mov dword [0x466fe0], eax
mov eax, dword [0x466ff8]
mov word [eax + edx*2], cx
movzx edi, byte [ebp + edx*4]
mov dword [esp + 0x64], edi
cmp edi, dword [esp + 0x1c]
jle 0x41f3e7
mov edx, dword [esp + 0x18]
mov esi, edi
shl esi, 4
movzx eax, bh
add esi, edx
mov dword [esp + 0x58], eax
mov dword [esp + 0x60], esi
movzx eax, word [0x466fd0]
mov ecx, dword [0x466fa8]
sub ecx, eax
inc bl
mov dword [esi], ecx
mov ecx, dword [0x466fd4]
movzx eax, bl
mov dword [esp + 0x54], eax
sub eax, dword [edx + ecx*4]
mov dword [edx + ecx*4], eax
dec dword [0x466fd4]
mov eax, dword [0x466fd8]
cmp eax, 0x100b
je 0x41f3d1
mov edi, dword [esp + 0x3c]
mov ecx, 0x100b
mov esi, dword [0x466fe0]
add edi, 0x1c
sub ecx, eax
lea edi, [edi + eax*4]
movzx eax, byte [ebp + 0x10f]
xor eax, dword [edi]
lea edi, [edi + 4]
imul eax, dword [esp + 0x58]
and eax, dword [esp + 0x54]
cdq
idiv esi
mov esi, edx
mov dword [0x466fe0], esi
sub ecx, 1
jne 0x41f3a0
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x18]
inc edi
add esi, 0x10
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], esi
cmp edi, dword [esp + 0x1c]
jg 0x41f351
mov ecx, dword [0x466fb8]
pop edi
pop esi
pop ebp
mov eax, dword [ecx*4 + 0x280]
or eax, dword [esp + 0x1c]
dec ecx
mov dword [0x466fb8], ecx
pop ebx
add esp, 0x4c
ret