Function at 0x12fab20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0xf4f5f6f7
mov edx, 0x92bb3fd4
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x6d44c030]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xd5
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0xdc
mov byte [esp + edx + 0x6d44c030], al
inc edx
cmp edx, 0x92bb3fd8
jne 0x12fab40
mov ebp, dword [esp + 4]
mov eax, dword [0x1320374]
test eax, eax
je 0x12fabd6
xor ecx, ecx
mov edx, dword [0x1320378]
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x9abdb589
je 0x12fabb0
inc ecx
cmp eax, ecx
jne 0x12faba0
jmp 0x12fabd6
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebp
je 0x12fabd6
lea ecx, [esp + 0x1c]
push ecx
push 0
push 0
push 5
push 4
push dword [0x132037c]
push eax
call fcn.01310f10
add esp, 0x1c
mov ebp, eax
mov dword [esp + 4], 0xb7f60904
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov esi, 0x85f5f97e
mov edi, 0x7a0a0681
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi + 0x7a0a0686]
mov eax, edi
or eax, ecx
lea ebx, [edi - 0x7a0a0600]
and ebx, ecx
xor ebx, eax
and ebx, esi
mov eax, ebx
or al, 0xfd
inc al
mov edx, ebx
and dl, 0xfd
mul dl
mov edx, eax
add dl, cl
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub dl, al
movzx eax, dl
add eax, esi
add al, 0x8a
mov byte [esp + esi + 0x7a0a0686], al
inc esi
dec edi
cmp esi, 0x85f5f985
jne 0x12fac00
cmp ebp, dword [esp + 4]
jne 0x12facf0
push dword [esp + 0x1c]
call fcn.0130e1b0
add esp, 4
mov ebp, eax
mov edi, dword [esp + 0x1c]
mov dword [esp + 4], 0xf4f5f6f7
mov esi, 0x92bb3fd4
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + esi + 0x6d44c030]
mov ebx, edx
and ebx, esi
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xd5
mul cl
mov ecx, eax
add cl, dl
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, esi
add al, 0xdc
mov byte [esp + esi + 0x6d44c030], al
inc esi
cmp esi, 0x92bb3fd8
jne 0x12fac80
mov eax, dword [esp + 4]
mov ecx, dword [0x1320374]
test ecx, ecx
je 0x12fad16
xor edx, edx
mov esi, dword [0x1320378]
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x9abdb589
je 0x12facf7
inc edx
cmp ecx, edx
jne 0x12face0
jmp 0x12fad16
xor ebx, ebx
jmp 0x12fb059
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x12fad16
push 0
push edi
push ebp
push 5
push 4
push dword [0x132037c]
push ecx
call fcn.01310f10
add esp, 0x1c
xor ebx, ebx
test eax, eax
js 0x12fb050
mov esi, dword [ebp]
xor eax, eax
mov ecx, esi
mov edx, ebp
nop
nop
nop
nop
nop
nop
nop
lea edi, [edx + ecx]
mov ecx, dword [edx + ecx]
add eax, 0x208
add ebx, 0x104
mov edx, edi
test ecx, ecx
jne 0x12fad30
test ebx, ebx
jns 0x12fad50
mov eax, 0xffffffff
push eax
call fcn.012dc880
add esp, 4
mov ebx, eax
mov ecx, ebp
jmp 0x12fad70
add ecx, esi
mov word [eax], 0xa
add eax, 2
mov esi, dword [ecx]
test esi, esi
je 0x12fad93
mov edx, dword [ecx + esi + 0x3c]
movzx edi, word [edx]
test di, di
je 0x12fad60
add edx, 2
nop
mov word [eax], di
add eax, 2
movzx edi, word [edx]
add edx, 2
test di, di
jne 0x12fad80
jmp 0x12fad60
mov dword [esp], 0
cmp eax, ebx
je 0x12fb044
mov word [eax], 0
movzx esi, word [ebx]
test si, si
je 0x12fadfc
mov eax, ebx
add eax, 2
mov dword [esp], 0
mov ecx, esi
jmp 0x12fadce
inc dword [esp]
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0x12fadfc
cmp cx, 0x7f
jbe 0x12fadc0
movzx edx, cx
cmp edx, 0x7ff
ja 0x12fadf0
add dword [esp], 2
jmp 0x12fadc3
cmp cx, 0xffff
je 0x12fadc3
add dword [esp], 3
jmp 0x12fadc3
mov dword [esp + 0x24], ebp
mov eax, dword [esp]
inc eax
push eax
call fcn.012dc880
add esp, 4
mov ebp, eax
mov dword [esp + 0x18], eax
test si, si
mov dword [esp + 0x20], ebx
je 0x12faf47
mov ebp, dword [esp + 0x18]
cmp dword [esp], 0
je 0x12faf47
mov edx, ebx
mov ecx, dword [esp]
mov ebp, dword [esp + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, si
lea esi, [edx + 2]
cmp ax, 0x7f
ja 0x12fae60
lea edi, [ebp + 1]
mov byte [ebp], al
jmp 0x12faef0
cmp eax, 0x7ff
ja 0x12fae90
cmp ecx, 2
jb 0x12fae90
mov edx, eax
shr edx, 6
add dl, 0xc0
mov byte [ebp], dl
and al, 0x3f
or al, 0x80
lea edi, [ebp + 2]
mov byte [ebp + 1], al
jmp 0x12faef0
mov edi, eax
and edi, 0xfc00
cmp edi, 0xd800
jne 0x12faf0a
cmp ecx, 4
jb 0x12faf0a
movzx esi, word [edx + 2]
add edx, 4
shl eax, 0xa
add eax, esi
add eax, 0xfca02400
mov ebx, eax
shr ebx, 0x12
add bl, 0xf0
mov byte [ebp], bl
mov ebx, eax
shr ebx, 0xc
and bl, 0x3f
or bl, 0x80
mov byte [ebp + 1], bl
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [ebp + 2], al
mov eax, esi
and al, 0x3f
or al, 0x80
lea edi, [ebp + 4]
mov byte [ebp + 3], al
mov esi, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
add ecx, ebp
sub ecx, edi
mov edx, esi
mov ebp, edi
movzx esi, word [edx]
test si, si
je 0x12faf47
test ecx, ecx
jne 0x12fae40
jmp 0x12faf47
movzx edx, di
cmp edx, 0xdc00
jne 0x12faf19
mov edx, esi
jmp 0x12faef8
cmp ecx, 3
jb 0x12faf43
mov edx, eax
shr edx, 0xc
or dl, 0xe0
mov byte [ebp], dl
mov edx, eax
shr edx, 6
and dl, 0x3f
or dl, 0x80
mov byte [ebp + 1], dl
and al, 0x3f
or al, 0x80
mov byte [ebp + 2], al
lea edi, [ebp + 3]
jmp 0x12faef0
mov edi, ebp
jmp 0x12faef0
mov byte [ebp], 0
mov dword [esp + 4], 0xacd7d5b4
mov dword [esp + 8], 0xa2dfdeaf
mov dword [esp + 0xc], 0xd1d299d1
mov word [esp + 0x10], 0x4bd4
mov dword [esp + 0x12], 0
mov word [esp + 0x16], 0
mov eax, 0x281ea212
mov ecx, 0xd7e15dee
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x281ea20e]
mov edi, ecx
xor edi, edx
mov esi, edx
mov dword [esp + 0x28], edx
lea edx, [ecx + 0x40000000]
or edx, edi
add edx, eax
mov ebx, edx
and ebx, 0xfffffffd
mov edi, edx
or edi, 0xfffffffd
inc edi
imul edi, ebx
mov ebx, edx
or ebx, 2
lea ebp, [edi + esi]
shr edx, 1
and edx, 1
imul edx, ebx
add edx, edx
sub ebp, edx
lea esi, [eax + ebp]
lea ebx, [eax + ebp]
dec ebx
lea ebp, [esi*2 - 2]
and ebp, 0x6ecdab54
or ebx, 0xc8992a55
sub edx, edi
sub edx, dword [esp + 0x28]
add edx, ecx
or edx, 0x3766d5aa
and edx, ebx
sub edx, ebp
lea esi, [edx*2 + 2]
inc edx
sub edx, esi
inc dl
mov byte [esp + eax - 0x281ea20e], dl
inc eax
dec ecx
cmp eax, 0x281ea226
jne 0x12faf90
lea eax, [esp + 4]
mov ecx, dword [esp + 0x40]
push dword [esp]
mov esi, dword [esp + 0x1c]
push esi
push eax
call fcn.012dd410
mov dword [esp], eax
push esi
call fcn.012dc890
add esp, 4
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
push ebx
call fcn.012dc890
add esp, 4
mov ebx, dword [esp]
push ebp
call fcn.0130e210
add esp, 4
mov eax, ebx
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret