Function at 0x1296fd1
Capabilities:
Encode data using xor

Disassembly:
pushfd
push ebp
mov ebp, esp
sub esp, 0x50
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x48], esi
lea ebx, [ebp + 4]
mov dword [ebp - 0x40], edi
mov edi, dword [ebx + 4]
sub ebx, 4
push edi
push edi
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x14], edi
mov eax, 0xa6e2ff8b
mov edx, 0x1000000
mov esi, dword [edi]
mov edi, dword [edi + 8]
mov eax, 0xfffffff
and dword [ebp - 0x24], 0
and dword [ebp - 0x20], 0
pop ecx
pop ecx
and edi, eax
and esi, eax
mov ecx, dword [0x11e47bc]
add edi, edx
mov eax, edx
sub eax, ecx
mov dword [ebp - 0x18], eax
jne 0x129708e
and dword [ebp - 4], 0
test esi, esi
jbe 0x12972b2
mov ebx, 0x684fab30
mov ecx, 0x7fffffff
mov edx, 0x97b054d0
mov eax, dword [ebp - 4]
movzx eax, byte [eax + edi]
sub eax, ebx
add dword [ebp - 0x24], eax
add eax, dword [ebp - 0x20]
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
mov edx, eax
imul edx, edx, 0x4abb
xor eax, edx
add dword [ebp - 0x24], eax
inc dword [ebp - 4]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 4], esi
jb 0x1297044
jmp 0x12972af
lea eax, [edi + esi]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x100003c]
mov ecx, edi
sub ecx, edx
mov ebx, ecx
mov edx, ecx
and edx, 0xfffff000
add ecx, esi
mov esi, dword [eax + 0x10000a0]
sub ebx, edx
mov eax, dword [eax + 0x10000a4]
mov dword [ebp - 4], edx
mov edx, ecx
and edx, 0xfffff000
mov dword [ebp - 0x38], edx
sub ecx, edx
mov dword [ebp - 0x34], ecx
add esi, 0x1000000
add eax, esi
mov dword [ebp - 0x30], eax
jmp 0x12970e1
mov ecx, dword [ebp - 4]
cmp dword [esi], ecx
jae 0x12970e5
add esi, dword [esi + 4]
cmp esi, eax
jne 0x12970d7
and dword [ebp - 0x28], 0
cmp esi, eax
je 0x1297126
mov ecx, dword [ebp - 4]
cmp dword [esi], ecx
jne 0x1297126
mov ecx, dword [esi + 4]
sub ecx, 8
shr ecx, 1
mov dword [ebp - 0x10], ecx
je 0x1297126
lea ecx, [esi + 8]
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 4]
movzx ecx, word [ecx]
and ecx, 0xfff
cmp ecx, ebx
jae 0x1297126
inc dword [ebp - 0x28]
mov ecx, dword [ebp - 0x10]
add dword [ebp - 4], 2
cmp dword [ebp - 0x28], ecx
jne 0x1297107
mov ecx, 0x7fffffff
mov ebx, 0x684fab30
jmp 0x1297138
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x38]
cmp esi, eax
je 0x1297263
cmp dword [esi], edx
ja 0x1297263
mov eax, dword [esi + 4]
lea edx, [eax - 8]
mov eax, dword [ebp - 0x28]
shr edx, 1
cmp eax, edx
jne 0x1297174
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x30]
je 0x1297263
mov eax, dword [ebp - 0x38]
cmp dword [esi], eax
ja 0x1297263
and dword [ebp - 0x28], 0
jmp 0x1297148
mov edx, dword [ebp - 0x38]
cmp dword [esi], edx
jne 0x129718e
movzx eax, word [esi + eax*2 + 8]
and eax, 0xfff
cmp eax, dword [ebp - 0x34]
jae 0x1297263
mov eax, dword [ebp - 0x28]
inc dword [ebp - 0x28]
mov edx, 0xf000
test word [esi + eax*2 + 8], dx
je 0x1297132
movzx eax, word [esi + eax*2 + 8]
mov edx, dword [esi]
and dword [ebp - 4], 0
and eax, 0xfff
lea eax, [eax + edx + 0x1000000]
mov dword [ebp - 8], eax
sub dword [ebp - 8], edi
mov dword [ebp - 0x10], eax
je 0x129720d
mov eax, dword [ebp - 4]
mov edx, 0x97b054d0
movzx eax, byte [eax + edi]
sub eax, ebx
add dword [ebp - 0x24], eax
add eax, dword [ebp - 0x20]
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
mov edx, eax
imul edx, edx, 0x4abb
xor eax, edx
add dword [ebp - 0x24], eax
inc dword [ebp - 4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 8]
jb 0x12971c2
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
sub eax, dword [ebp - 0x18]
mov dword [ebp - 8], eax
xor edi, edi
mov edx, 0x97b054d0
movzx eax, byte [ebp + edi - 8]
sub eax, ebx
add dword [ebp - 0x24], eax
add eax, dword [ebp - 0x20]
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
mov edx, eax
imul edx, edx, 0x4abb
xor eax, edx
add dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
inc edi
cmp edi, 4
jb 0x1297217
mov edi, dword [ebp - 0x10]
add edi, 4
jmp 0x1297132
mov eax, dword [ebp - 0x1c]
xor esi, esi
sub eax, edi
mov dword [ebp - 0x1c], eax
je 0x12972af
movzx eax, byte [esi + edi]
mov edx, 0x97b054d0
sub eax, ebx
add dword [ebp - 0x24], eax
add eax, dword [ebp - 0x20]
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
mov edx, eax
imul edx, edx, 0x4abb
xor eax, edx
add dword [ebp - 0x24], eax
inc esi
mov dword [ebp - 0x20], eax
cmp esi, dword [ebp - 0x1c]
jb 0x129726f
mov ebx, dword [ebp - 0xc]
add dword [ebx + 8], 0x10
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0xc]
and eax, 0xfffffff
sub ecx, dword [eax + 0x1000000]
sbb edx, dword [eax + 0x1000004]
mov eax, ecx
or eax, edx
je 0x129738c
call fcn.01244f80
mov edx, 0xfffff000
lea ecx, [ebx + 0xc]
and ecx, 0xfffffffc
lea esi, [ecx + 0xfff]
and eax, edx
and esi, edx
mov dword [ebp - 0x1c], eax
mov edx, 0xffff
xor eax, eax
mov dword [ebx + 8], 0x10d8814
mov edi, dword [0x12d47a4]
imul edi, edi, 0x343fd
add edi, 0x269ec3
mov dword [0x12d47a4], edi
shr edi, 0x10
shl eax, 0x10
shr edx, 0x10
or eax, edi
test edx, edx
jne 0x1297308
mov edi, 0xffff
div edi
mov eax, dword [ebp - 0x1c]
inc edx
cmp ecx, esi
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x3c], edx
mov eax, ecx
mov dword [ebp - 0x1c], 0
jae 0x1297359
mov ecx, dword [ebp - 0x1c]
mov dword [eax], ecx
add eax, 4
cmp eax, esi
jb 0x129734d
mov eax, dword [ebp - 0x14]
mov dword [ebx + 8], 0x10d8814
mov eax, dword [eax + 4]
and eax, 0xfffffff
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
shl edx, 0x10
mov dword [ebp - 0x40], ecx
add eax, 0x1000000
xor edx, dword [eax]
xor edx, dword [0x12d4c44]
xor edx, ecx
and dword [ebp - 0x3c], 0
mov dword [ebp - 0x48], edx
mov eax, 0x4bff5128
mov esi, dword [ebp - 0x48]
mov edi, dword [ebp - 0x40]
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x4c]
mov esp, ebp
pop ebp
popfd
ret