Function at 0x12a29f6f
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x174
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx + 4]
push esi
push edi
mov edi, dword [ebp + 0xc]
mov eax, edx
add edx, edi
xor esi, esi
and eax, 0x3f
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], eax
mov dword [ecx + 4], edx
cmp edx, edi
jae 0x12a29f9d
inc dword [ecx]
push 0x40
pop edx
sub edx, eax
cmp edi, edx
jb 0x12a2a18b
lea edi, [ebp - 0x34]
lea edx, [ecx + 0x48]
push ebx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x18], edi
test eax, eax
jbe 0x12a29fea
push 0x40
pop edi
sub edi, eax
mov dword [ebp - 8], edi
mov edi, dword [ebp + 8]
add esi, edi
lea ebx, [ecx + 8]
add eax, ebx
mov dword [ebp - 0xc], esi
mov dword [ebp - 4], eax
mov edi, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
mov eax, edi
cld
or ecx, ecx
je 0x12a29fe8
rep movsb byte es:[edi], byte [esi]
jmp 0x12a29ff0
mov eax, dword [ebp + 8]
lea ebx, [esi + eax]
xor ecx, ecx
lea eax, [ebx + 1]
movzx esi, byte [eax - 1]
movzx edi, byte [eax]
shl esi, 8
or esi, edi
movzx edi, byte [eax + 1]
shl esi, 8
or esi, edi
movzx edi, byte [eax + 2]
shl esi, 8
or esi, edi
mov dword [ebp + ecx*4 - 0x174], esi
inc ecx
add eax, 4
cmp ecx, 0x10
jb 0x12a29ff5
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x1c]
mov ecx, 0x14
mov eax, edi
cld
or ecx, ecx
je 0x12a2a037
rep movsb byte es:[edi], byte [esi]
push 0x40
lea eax, [ebp - 0x16c]
pop ecx
mov esi, dword [eax + 0x2c]
xor esi, dword [eax + 0x18]
xor esi, dword [eax - 8]
xor esi, dword [eax]
add eax, 4
dec ecx
rol esi, 1
mov dword [eax + 0x34], esi
jne 0x12a2a040
and dword [ebp - 4], ecx
and dword [ebp - 0xc], ecx
lea eax, [ebp - 0x174]
mov dword [ebp - 8], eax
mov esi, dword [edx]
mov eax, dword [ebp - 0xc]
mov edi, dword [edx + 0xc]
mov ebx, dword [edx + 8]
mov ecx, dword [edx + 4]
rol esi, 5
cmp eax, 0x3c
jl 0x12a2a083
mov eax, ecx
xor eax, ebx
xor eax, edi
jmp 0x12a2a0ad
cmp eax, 0x28
jl 0x12a2a094
mov eax, ebx
or eax, edi
and eax, ecx
and ebx, edi
or eax, ebx
jmp 0x12a2a0ad
cmp eax, 0x14
jge 0x12a2a07b
test eax, eax
jl 0x12a2a0ab
mov eax, ecx
not eax
and eax, edi
mov edi, ecx
and edi, ebx
or eax, edi
jmp 0x12a2a0ad
xor eax, eax
mov edi, dword [edx + 0x10]
add edi, eax
mov eax, dword [ebp - 8]
add edi, dword [eax]
add esi, edi
cmp word [ebp - 4], 0x3c
jl 0x12a2a0cc
mov eax, dword [0x12a3950c]
xor eax, 0x2932fcbe
jmp 0x12a2a104
cmp word [ebp - 4], 0x28
jl 0x12a2a0df
mov eax, dword [0x12a39510]
xor eax, 0x2dfea903
jmp 0x12a2a104
cmp word [ebp - 4], 0x14
jl 0x12a2a0f2
mov eax, dword [0x12a39514]
xor eax, 0x1f09debd
jmp 0x12a2a104
xor eax, eax
cmp word [ebp - 4], ax
jl 0x12a2a104
mov eax, dword [0x12a39518]
xor eax, 0x97f53ba
mov edi, dword [edx + 0xc]
add dword [ebp - 8], 4
ror ecx, 2
add eax, esi
inc dword [ebp - 4]
inc dword [ebp - 0xc]
cmp word [ebp - 4], 0x50
mov dword [edx + 0x10], edi
mov edi, dword [edx + 8]
mov dword [edx + 8], ecx
mov ecx, dword [edx]
mov dword [edx + 0xc], edi
mov dword [edx + 4], ecx
mov dword [edx], eax
jl 0x12a2a065
lea eax, [ebp - 0x34]
mov esi, eax
mov ecx, edx
push 5
sub ecx, esi
pop esi
mov edi, dword [ecx + eax]
add dword [eax], edi
add eax, 4
dec esi
jne 0x12a2a140
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
mov ecx, 0x14
mov eax, edi
cld
or ecx, ecx
je 0x12a2a15f
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0x10]
and dword [ebp - 0x10], 0
push 0x40
pop ecx
sub ecx, eax
add dword [ebp - 0x14], ecx
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebp - 0x14]
lea eax, [ecx + eax - 0x40]
mov ecx, dword [ebp + 0x10]
mov dword [ebp + 0xc], eax
cmp eax, 0x40
mov eax, dword [ebp - 0x10]
jae 0x12a29fba
pop ebx
cmp dword [ebp + 0xc], 0
je 0x12a2a1b2
mov edx, dword [ebp + 8]
add esi, edx
lea eax, [eax + ecx + 8]
mov dword [ebp + 0x10], esi
mov dword [ebp - 0x18], eax
mov edi, dword [ebp - 0x18]
mov esi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov eax, edi
cld
or ecx, ecx
je 0x12a2a1b2
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
leave
ret