Function at 0x411ff0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x38
mov edx, dword [0x514778]
mov ecx, edx
mov eax, dword [0x514794]
add ecx, ecx
push ebx
push ebp
mov ebp, dword [esp + 0x64]
imul eax, dword [eax + ecx*8], 0x7fc
mov ecx, dword [esp + 0x58]
push esi
push edi
mov byte [esp + 0x13], 0x14
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
movzx eax, word [eax + 0x3568]
xor eax, dword [0x51478c]
mov dword [esp + 0x28], eax
movzx eax, word [0x5147a4]
mov ax, word [ecx + eax*4 + 0x1c]
xor ax, dx
movzx ebx, ax
mov eax, dword [0x514768]
movzx eax, byte [eax + 0x356]
mov dword [esp + 0x3c], eax
mov eax, 0xffff
add word [ebp], ax
mov eax, dword [0x5147a8]
mov ecx, dword [0x51476c]
mov di, word [0x5147a4]
mov dword [esp + 0x14], ecx
mov ax, word [eax + 0x4478]
and ax, cx
movzx edx, di
movzx eax, ax
mov ecx, edx
mov dword [esp + 0x40], eax
add ecx, ecx
imul eax, dword [esp + 0x5c], 0x93b
mov dword [esp + 0x18], eax
mov eax, dword [0x514774]
mov eax, dword [eax + ecx*8 + 4]
mov ecx, dword [esp + 0x58]
xor eax, 0xb2b
mov dword [esp + 0x30], eax
mov eax, dword [ecx + edx*4 + 0x30]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
movzx eax, word [ebp]
mov al, byte [edx + eax*4]
mov edx, 0xffff
xor al, 0xd2
add di, dx
dec dword [0x51477c]
mov byte [esp + 0x6c], al
mov eax, dword [0x514778]
add eax, 9
add eax, eax
mov eax, dword [ecx + eax*8]
and eax, dword [0x51478c]
mov cx, word [0x514760]
mov dword [esp + 0x44], eax
add cx, dx
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x50]
dec eax
mov dword [0x51476c], eax
mov word [0x514760], cx
mov dword [esp + 0x14], eax
mov word [0x5147a4], di
movzx eax, word [ebp]
movzx ecx, cx
add ecx, dword [edx + eax*4 + 0x1c]
mov eax, dword [0x514784]
mov edx, dword [esp + 0x60]
dec eax
mov dword [0x514784], eax
imul eax, eax, 0xc
mov dword [esp + 0x38], ecx
movzx ecx, byte [0x514762]
or ecx, dword [eax + edx + 0x10]
mov dword [esp + 0x2c], ecx
mov eax, dword [0x514790]
mov esi, ebx
mov edi, dword [esp + 0x58]
movzx eax, word [eax + 0x73e8]
inc word [ebp]
mov edx, dword [0x514780]
inc edx
mov dword [esp + 0x1c], eax
mov eax, dword [0x514794]
mov dword [0x514780], edx
movzx ecx, word [ebp]
mov eax, dword [eax + ecx*4 + 0x10]
imul eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [0x51478c]
cmp esi, eax
ja 0x412216
movzx ecx, byte [esp + 0x6c]
mov bl, byte [esp + 0x13]
mov dword [esp + 0x6c], ecx
inc eax
mov dword [0x51478c], eax
mov dword [edi + esi*4 + 0x88], 0x1348
movzx ecx, word [0x51476c]
movzx edx, word [0x514760]
movzx eax, bl
imul eax, ecx
mov ecx, dword [esp + 0x28]
xor ax, word [ecx + edx*2]
xor ax, word [ebp + 0xc6a]
dec bl
mov word [ecx + edx*2], ax
mov eax, dword [0x51476c]
mov edx, dword [esp + 0x60]
movzx ecx, word [ebp]
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0x64]
mov dword [edx + ecx*4], eax
mov ecx, dword [0x51479c]
mov eax, dword [0x514780]
mov dword [ecx + esi*4], eax
mov ecx, dword [0x51477c]
add ecx, dword [esp + 0x6c]
inc esi
mov eax, dword [0x51478c]
mov dword [0x51477c], ecx
cmp esi, eax
jbe 0x41219b
jmp 0x41221c
mov ecx, dword [0x51477c]
mov ebx, dword [esp + 0x30]
inc eax
mov dword [0x51478c], eax
xor edx, edx
inc ebx
inc ecx
mov dword [0x51477c], ecx
movzx esi, word [ebp]
mov eax, dword [edi + ebx*4]
div ecx
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx]
mov ecx, dword [esp + 0x4c]
movzx ecx, word [ecx + eax*2]
mov eax, edx
xor edx, edx
div ecx
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
xor byte [esi + ecx], al
mov ecx, dword [esp + 0x1c]
mov al, cl
xor al, byte [0x5147a0]
mov esi, dword [esp + 0x18]
or al, 0xfa
dec esi
mov dword [esp + 0x18], esi
or byte [esi + edx], al
mov eax, 0xfffe
add word [ebp], ax
inc ecx
movzx eax, word [ebp]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
movzx ecx, word [ebp + eax*2 + 6]
movzx edx, word [edx + eax*4]
movzx eax, word [0x514760]
sub edx, ecx
mov ecx, dword [esp + 0x14]
imul edx, eax
movzx eax, word [0x5147a4]
mov dword [0x514778], edx
xor dword [edi + eax*4], ecx
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x64]
imul ecx, esi, 0xc
mov ecx, dword [ecx + eax]
mov eax, dword [esp + 0x20]
movzx eax, word [eax]
cmp ecx, dword [edx + eax*4 + 0x8c]
je 0x412320
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x24]
imul edx, ebx, 6
mov eax, dword [esp + 0x2c]
or word [edx + eax], cx
mov al, byte [0x514778]
add byte [ebx + esi], al
movzx eax, word [0x5147a4]
movzx eax, word [ebp + eax*2]
xor eax, 0xacb
or eax, dword [0x514780]
or dword [0x51477c], eax
inc ecx
mov eax, dword [esp + 0x20]
movzx eax, word [eax]
cmp ecx, dword [edi + eax*4 + 0x8c]
jne 0x4122da
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x58]
mov edx, dword [0x514778]
mov ecx, dword [esp + 0x24]
imul eax, edx, 3
dec edx
mov al, byte [eax + ecx]
mov ecx, dword [esp + 0x50]
movzx eax, al
mov ecx, dword [ecx + esi*4]
mov dword [0x514778], edx
cmp ecx, eax
je 0x41239c
mov cx, word [0x514760]
mov edx, dword [esp + 0x60]
movzx eax, cx
imul eax, eax, 0xc
mov eax, dword [eax + edx]
mov edx, 0xffff
add cx, dx
mov word [0x514760], cx
cmp eax, 0x1513
jae 0x41239c
inc word [ebp]
movzx ecx, word [ebp]
mov eax, dword [0x514768]
movzx eax, byte [ecx + eax + 4]
mov ecx, dword [esp + 0x14]
cmp eax, dword [ecx + 0x53c0]
jb 0x41239c
mov eax, dword [esp + 0x40]
movzx eax, ax
cmp dword [0x514778], eax
jae 0x4123ca
movzx ecx, word [ebp]
mov edx, 0x1ba5
mov eax, dword [esp + 0x68]
mov word [eax + ecx*2], dx
mov eax, dword [0x51476c]
movzx ecx, word [0x514760]
movzx eax, word [eax*4 + 0x17a9]
imul eax, ecx
mov word [0x514760], ax
movzx eax, word [0x5147a4]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
imul eax, eax, 6
movzx eax, word [eax + ecx]
mov ecx, edx
sub ecx, eax
mov eax, dword [esp + 0x64]
mov dword [eax + esi*4 + 0x14], ecx
mov ecx, 0x1613
mov eax, dword [esp + 0x1c]
inc word [0x5147a4]
movzx eax, ax
mov ax, word [edi + eax*4]
add ax, word [0x514788]
and ax, cx
mov ecx, dword [esp + 0x2c]
pop edi
mov word [ecx + edx*2 + 8], ax
xor edx, edx
mov esi, dword [0x514784]
mov eax, dword [0x514770]
inc word [0x5147a4]
imul ecx, esi, 0xc
mov eax, dword [ecx + eax]
div dword [esp + 0x58]
inc esi
mov dword [0x514784], esi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret