Function at 0x1051b50
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x344
mov eax, dword [0x3173a4]
mov dword [ebp - 8], eax
mov dword [ebp - 0x324], ecx
mov dword [ebp - 0x20c], 0
mov dword [ebp - 4], 1
mov eax, dword [ebp - 0x20c]
mov cl, byte [ebp - 4]
mov byte [ebp + eax - 0x208], cl
mov edx, dword [ebp - 0x20c]
mov al, byte [ebp - 4]
mov byte [ebp + edx - 0x109], al
mov ecx, dword [ebp - 4]
mov dl, byte [ebp - 0x20c]
mov byte [ebp + ecx - 0x310], dl
mov eax, dword [ebp - 0x20c]
add eax, 1
mov dword [ebp - 0x20c], eax
mov ecx, dword [ebp - 4]
shl ecx, 1
mov edx, dword [ebp - 4]
and edx, 0x80
neg edx
sbb edx, edx
and edx, 0x11b
xor ecx, edx
xor ecx, dword [ebp - 4]
mov dword [ebp - 4], ecx
cmp dword [ebp - 4], 1
jne 0x1051b7a
xor eax, eax
je 0x1051be5
jmp 0x1051c4d
mov dword [ebp - 0x318], 0
mov dword [ebp - 0x314], 1
jmp 0x1051c0a
mov ecx, dword [ebp - 0x318]
add ecx, 1
mov dword [ebp - 0x318], ecx
cmp dword [ebp - 0x318], 0x1e
jae 0x1051c4d
mov edx, dword [ebp - 0x318]
mov al, byte [ebp - 0x314]
mov byte [edx + 0x31a860], al
mov ecx, dword [ebp - 0x314]
shl ecx, 1
mov edx, dword [ebp - 0x314]
and edx, 0x80
neg edx
sbb edx, edx
and edx, 0x11b
xor ecx, edx
mov dword [ebp - 0x314], ecx
jmp 0x1051bfb
xor eax, eax
je 0x1051c56
jmp 0x105229c
mov dword [ebp - 0x31c], 0
jmp 0x1051c71
mov ecx, dword [ebp - 0x31c]
add ecx, 1
mov dword [ebp - 0x31c], ecx
cmp dword [ebp - 0x31c], 0x100
jge 0x105229c
movzx edx, byte [ebp - 0x31c]
test edx, edx
je 0x1051cb2
movzx eax, byte [ebp - 0x31c]
movzx ecx, byte [ebp + eax - 0x310]
mov edx, 0xff
sub edx, ecx
movzx eax, byte [ebp + edx - 0x208]
mov dword [ebp - 0x328], eax
jmp 0x1051cbc
mov dword [ebp - 0x328], 0
mov ecx, dword [ebp - 0x328]
mov dword [ebp - 4], ecx
mov edx, dword [ebp - 4]
shl edx, 1
mov eax, dword [ebp - 4]
shl eax, 2
xor edx, eax
mov ecx, dword [ebp - 4]
shl ecx, 3
xor edx, ecx
mov eax, dword [ebp - 4]
shl eax, 4
xor edx, eax
xor edx, dword [ebp - 4]
mov dword [ebp - 4], edx
mov ecx, dword [ebp - 4]
sar ecx, 8
xor ecx, dword [ebp - 4]
xor ecx, 0x63
mov edx, dword [ebp - 0x31c]
mov byte [edx + 0x31cd80], cl
mov eax, dword [ebp - 0x31c]
mov cl, byte [eax + 0x31cd80]
mov byte [ebp - 0x31d], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x31d]
mov byte [edx*4 + 0x31c181], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x31d]
mov byte [ecx*4 + 0x31c180], dl
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x31d]
mov byte [eax*4 + 0x31c983], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x31d]
mov byte [edx*4 + 0x31c980], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x31d]
mov byte [ecx*4 + 0x31a883], dl
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x31d]
mov byte [eax*4 + 0x31a882], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x31d]
mov byte [edx*4 + 0x31ce82], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x31d]
mov byte [ecx*4 + 0x31ce81], dl
movzx eax, byte [ebp - 0x31d]
test eax, eax
je 0x1051dd4
movzx ecx, byte [ebp - 0x31d]
movzx edx, byte [ebp + ecx - 0x310]
movzx eax, byte [ebp + edx - 0x1ef]
mov dword [ebp - 0x32c], eax
jmp 0x1051dde
mov dword [ebp - 0x32c], 0
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x32c]
mov byte [ecx*4 + 0x31c183], dl
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x32c]
mov byte [eax*4 + 0x31c982], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x32c]
mov byte [edx*4 + 0x31a881], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x32c]
mov byte [ecx*4 + 0x31ce80], dl
movzx eax, byte [ebp - 0x31d]
test eax, eax
je 0x1051e54
movzx ecx, byte [ebp - 0x31d]
movzx edx, byte [ebp + ecx - 0x310]
movzx eax, byte [ebp + edx - 0x207]
mov dword [ebp - 0x330], eax
jmp 0x1051e5e
mov dword [ebp - 0x330], 0
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x330]
mov byte [ecx*4 + 0x31c182], dl
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x330]
mov byte [eax*4 + 0x31c981], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x330]
mov byte [edx*4 + 0x31a880], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x330]
mov byte [ecx*4 + 0x31ce83], dl
movzx eax, byte [ebp - 0x31c]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 4]
shl ecx, 1
mov edx, dword [ebp - 4]
shl edx, 3
xor ecx, edx
mov eax, dword [ebp - 4]
shl eax, 6
xor ecx, eax
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 4]
sar ecx, 8
xor ecx, dword [ebp - 4]
xor ecx, 5
movzx edx, cl
test edx, edx
je 0x1051f2f
movzx eax, byte [ebp - 0x31c]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 4]
shl ecx, 1
mov edx, dword [ebp - 4]
shl edx, 3
xor ecx, edx
mov eax, dword [ebp - 4]
shl eax, 6
xor ecx, eax
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 4]
sar ecx, 8
xor ecx, dword [ebp - 4]
xor ecx, 5
movzx edx, cl
movzx eax, byte [ebp + edx - 0x310]
mov ecx, 0xff
sub ecx, eax
movzx edx, byte [ebp + ecx - 0x208]
mov dword [ebp - 0x334], edx
jmp 0x1051f39
mov dword [ebp - 0x334], 0
mov al, byte [ebp - 0x334]
mov byte [ebp - 0x31d], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x31d]
mov byte [ecx + 0x31b080], dl
movzx eax, byte [ebp - 0x31d]
test eax, eax
je 0x1051f81
movzx ecx, byte [ebp - 0x31d]
movzx edx, byte [ebp + ecx - 0x310]
movzx eax, byte [ebp + edx - 0x1a0]
mov dword [ebp - 0x338], eax
jmp 0x1051f8b
mov dword [ebp - 0x338], 0
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x338]
mov byte [ecx*4 + 0x31b982], dl
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x338]
mov byte [eax*4 + 0x31a461], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x338]
mov byte [edx*4 + 0x31ac80], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x338]
mov byte [ecx*4 + 0x31c583], dl
movzx eax, byte [ebp - 0x31d]
mov cl, byte [ebp - 0x338]
mov byte [eax*4 + 0x31b582], cl
movzx edx, byte [ebp - 0x31d]
mov al, byte [ebp - 0x338]
mov byte [edx*4 + 0x31b181], al
movzx ecx, byte [ebp - 0x31d]
mov dl, byte [ebp - 0x338]
mov byte [ecx*4 + 0x31bd80], dl
movzx eax, byte [ebp - 0x31d]
mov cl, byte [ebp - 0x338]
mov byte [eax*4 + 0x31d283], cl
movzx edx, byte [ebp - 0x31d]
test edx, edx
je 0x1052051
movzx eax, byte [ebp - 0x31d]
movzx ecx, byte [ebp + eax - 0x310]
movzx edx, byte [ebp + ecx - 0x141]
mov dword [ebp - 0x33c], edx
jmp 0x105205b
mov dword [ebp - 0x33c], 0
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x33c]
mov byte [eax*4 + 0x31b980], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x33c]
mov byte [edx*4 + 0x31a463], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x33c]
mov byte [ecx*4 + 0x31ac82], dl
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x33c]
mov byte [eax*4 + 0x31c581], cl
movzx edx, byte [ebp - 0x31d]
mov al, byte [ebp - 0x33c]
mov byte [edx*4 + 0x31b580], al
movzx ecx, byte [ebp - 0x31d]
mov dl, byte [ebp - 0x33c]
mov byte [ecx*4 + 0x31b183], dl
movzx eax, byte [ebp - 0x31d]
mov cl, byte [ebp - 0x33c]
mov byte [eax*4 + 0x31bd82], cl
movzx edx, byte [ebp - 0x31d]
mov al, byte [ebp - 0x33c]
mov byte [edx*4 + 0x31d281], al
movzx ecx, byte [ebp - 0x31d]
test ecx, ecx
je 0x1052121
movzx edx, byte [ebp - 0x31d]
movzx eax, byte [ebp + edx - 0x310]
movzx ecx, byte [ebp + eax - 0x11a]
mov dword [ebp - 0x340], ecx
jmp 0x105212b
mov dword [ebp - 0x340], 0
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x340]
mov byte [edx*4 + 0x31b981], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x340]
mov byte [ecx*4 + 0x31a460], dl
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x340]
mov byte [eax*4 + 0x31ac83], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x340]
mov byte [edx*4 + 0x31c582], al
movzx ecx, byte [ebp - 0x31d]
mov dl, byte [ebp - 0x340]
mov byte [ecx*4 + 0x31b581], dl
movzx eax, byte [ebp - 0x31d]
mov cl, byte [ebp - 0x340]
mov byte [eax*4 + 0x31b180], cl
movzx edx, byte [ebp - 0x31d]
mov al, byte [ebp - 0x340]
mov byte [edx*4 + 0x31bd83], al
movzx ecx, byte [ebp - 0x31d]
mov dl, byte [ebp - 0x340]
mov byte [ecx*4 + 0x31d282], dl
movzx eax, byte [ebp - 0x31d]
test eax, eax
je 0x10521f1
movzx ecx, byte [ebp - 0x31d]
movzx edx, byte [ebp + ecx - 0x310]
movzx eax, byte [ebp + edx - 0x129]
mov dword [ebp - 0x344], eax
jmp 0x10521fb
mov dword [ebp - 0x344], 0
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x344]
mov byte [ecx*4 + 0x31b983], dl
mov eax, dword [ebp - 0x31c]
mov cl, byte [ebp - 0x344]
mov byte [eax*4 + 0x31a462], cl
mov edx, dword [ebp - 0x31c]
mov al, byte [ebp - 0x344]
mov byte [edx*4 + 0x31ac81], al
mov ecx, dword [ebp - 0x31c]
mov dl, byte [ebp - 0x344]
mov byte [ecx*4 + 0x31c580], dl
movzx eax, byte [ebp - 0x31d]
mov cl, byte [ebp - 0x344]
mov byte [eax*4 + 0x31b583], cl
movzx edx, byte [ebp - 0x31d]
mov al, byte [ebp - 0x344]
mov byte [edx*4 + 0x31b182], al
movzx ecx, byte [ebp - 0x31d]
mov dl, byte [ebp - 0x344]
mov byte [ecx*4 + 0x31bd81], dl
movzx eax, byte [ebp - 0x31d]
mov cl, byte [ebp - 0x344]
mov byte [eax*4 + 0x31d280], cl
jmp 0x1051c62
mov ecx, dword [ebp - 8]
call fcn.01031628
mov esp, ebp
pop ebp
ret