Function at 0x612e60
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd8
call fcn.004a2410
mov eax, dword [0x6f1114]
xor eax, esp
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xec]
push ebx
mov ebx, dword [esp + 0xe4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xf8]
push ebp
mov ebp, dword [esp + 0xf0]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x100]
push esi
mov esi, dword [esp + 0xf0]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x108]
shr esi, 3
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x40], 2
cmp esi, 0x14
je 0x612f22
cmp esi, 0x1c
je 0x612f22
cmp esi, 0x20
je 0x612f22
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0xd4]
xor ecx, esp
call fcn.004a1496
add esp, 0xd8
ret
test ebp, ebp
jne 0x612f57
cmp esi, 0x14
jne 0x612f38
call fcn.00571f00
mov ebp, eax
mov dword [esp + 0x1c], ebp
jmp 0x612f62
cmp esi, 0x1c
jne 0x612f4a
call fcn.00571f10
mov ebp, eax
mov dword [esp + 0x1c], ebp
jmp 0x612f62
call fcn.00571f20
mov ebp, eax
mov dword [esp + 0x1c], ebp
jmp 0x612f62
push ebp
call fcn.00584780
add esp, 4
mov esi, eax
mov ecx, dword [esp + 0x28]
push edi
mov edi, 0x200
cmp ebx, edi
cmovae edi, ebx
add edi, 0x3f
and edi, 0xffffffc0
test ecx, ecx
je 0x612fb7
mov eax, dword [esp + 0x100]
cmp eax, esi
jae 0x612fa2
push 0x55
push 0x6c7a20
push 0x6e
push 0x7d
push 0xa
call fcn.0057a880
add esp, 0x14
xor eax, eax
jmp 0x613633
cmova eax, esi
push eax
push ecx
lea eax, [esp + 0xcc]
push eax
call fcn.004b9750
add esp, 0xc
call fcn.005a7590
mov dword [esp + 0x38], eax
test eax, eax
je 0x613613
call fcn.005acbf0
mov ebx, eax
mov dword [esp + 0x10], ebx
test ebx, ebx
je 0x613613
push ebx
call fcn.005acce0
push ebx
call fcn.005acaa0
push dword [esp + 0x18]
mov ebx, eax
call fcn.005acaa0
push dword [esp + 0x1c]
mov dword [esp + 0x44], eax
call fcn.005acaa0
push dword [esp + 0x20]
mov dword [esp + 0x54], eax
call fcn.005acaa0
push dword [esp + 0x24]
mov dword [esp + 0x3c], eax
call fcn.005acaa0
push dword [esp + 0x28]
mov dword [esp + 0x4c], eax
call fcn.005acaa0
push dword [esp + 0x2c]
mov dword [esp + 0x70], eax
call fcn.005acaa0
push dword [esp + 0x30]
mov dword [esp + 0x3c], eax
call fcn.005acaa0
add esp, 0x24
mov dword [esp + 0x14], eax
test eax, eax
je 0x613613
lea eax, [edi - 1]
push eax
mov dword [esp + 0x50], eax
call fcn.0056e1c0
push eax
push dword [esp + 0x1c]
call fcn.005c3530
add esp, 0xc
test eax, eax
je 0x613613
mov edi, dword [esp + 0x40]
push dword [esp + 0x3c]
xor eax, eax
cmp dword [esp + 0x30], eax
push 0
push dword [esp + 0x24]
sete al
mov dword [esp + 0x34], eax
call fcn.005eb950
inc dword [esp + 0x48]
add esp, 0xc
test eax, eax
je 0x613613
cmp dword [esp + 0x2c], 0
jne 0x6130c2
lea eax, [esp + 0xc4]
push esi
push eax
call fcn.00577b50
add esp, 8
test eax, eax
jle 0x613613
jmp 0x6130ca
mov dword [esp + 0x2c], 0
push esi
lea eax, [esp + 0xc8]
push eax
lea eax, [esp + 0xac]
push eax
call fcn.004b9750
push esi
lea eax, [esp + 0xd4]
push eax
lea eax, [esp + 0x98]
push eax
call fcn.004b9750
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x61310f
add byte [esp + eax + 0xa4], 1
jne 0x61310f
sub eax, 1
jns 0x613100
push 0
push ebp
push 0
lea eax, [esp + 0x70]
push eax
lea eax, [esp + 0xd4]
push esi
push eax
call fcn.00571490
add esp, 0x18
test eax, eax
je 0x613613
push 0
push ebp
push 0
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0xb4]
push esi
push eax
call fcn.00571490
add esp, 0x18
test eax, eax
je 0x613613
xor ecx, ecx
test esi, esi
jle 0x613200
cmp esi, 0x40
jb 0x6131f0
mov eax, esi
and eax, 0x8000003f
jns 0x613179
dec eax
or eax, 0xffffffc0
inc eax
mov edx, esi
sub edx, eax
nop dword [eax]
movups xmm0, xmmword [esp + ecx + 0x64]
movups xmm1, xmmword [esp + ecx + 0x84]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x64], xmm1
movups xmm0, xmmword [esp + ecx + 0x74]
movups xmm1, xmmword [esp + ecx + 0x94]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x74], xmm1
movups xmm0, xmmword [esp + ecx + 0x84]
movups xmm1, xmmword [esp + ecx + 0xa4]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x84], xmm1
movups xmm0, xmmword [esp + ecx + 0x94]
movups xmm1, xmmword [esp + ecx + 0xb4]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x94], xmm1
add ecx, 0x40
cmp ecx, edx
jl 0x613180
cmp ecx, esi
jge 0x613200
nop
mov al, byte [esp + ecx + 0x84]
xor byte [esp + ecx + 0x64], al
inc ecx
cmp ecx, esi
jl 0x6131f0
push dword [esp + 0x24]
or byte [esp + 0x68], 0x80
lea eax, [esp + 0x68]
or byte [esp + esi + 0x67], 1
push esi
push eax
call fcn.0056d6a0
add esp, 0xc
test eax, eax
je 0x613613
push dword [esp + 0x1c]
push dword [esp + 0x2c]
push dword [esp + 0x18]
push 0x40
push dword [esp + 0x34]
call fcn.005ebe30
add esp, 0x14
test eax, eax
jg 0x61324d
je 0x613075
jmp 0x613613
mov ebp, dword [esp + 0x1c]
push 0
push 2
push ebp
call fcn.005eb950
add esp, 0xc
test eax, eax
je 0x613613
push 0
push 3
push ebp
call fcn.005eb950
add esp, 0xc
test eax, eax
je 0x613613
mov eax, 0xcccccccd
xor ecx, ecx
mul dword [esp + 0x4c]
mov dword [esp + 0x28], ecx
mov ebp, edx
shr ebp, 7
nop
test ecx, ecx
je 0x6132ab
push ecx
push 0
push dword [esp + 0x24]
call fcn.005eb950
add esp, 0xc
test eax, eax
je 0x613613
push 0
push edi
call fcn.0056e110
add esp, 8
xor edi, edi
test ebp, ebp
js 0x613359
lea eax, [esi - 1]
test eax, eax
js 0x6132df
nop word [eax + eax]
add byte [esp + eax + 0xa4], 1
jne 0x6132df
sub eax, 1
jns 0x6132d0
push 0
push dword [esp + 0x24]
lea eax, [esp + 0x6c]
push 0
push eax
lea eax, [esp + 0xb4]
push esi
push eax
call fcn.00571490
add esp, 0x18
test eax, eax
je 0x613613
push ebx
lea eax, [esp + 0x68]
push esi
push eax
call fcn.0056d6a0
add esp, 0xc
test eax, eax
je 0x613613
lea eax, [esi*8]
imul eax, edi
push eax
push ebx
push ebx
call fcn.005c3530
add esp, 0xc
test eax, eax
je 0x613613
mov eax, dword [esp + 0x40]
push ebx
push eax
push eax
call fcn.005acdc0
add esp, 0xc
test eax, eax
je 0x613613
inc edi
cmp edi, ebp
jle 0x6132c0
push dword [esp + 0x4c]
mov edi, dword [esp + 0x44]
push edi
call fcn.0056dda0
add esp, 8
test eax, eax
je 0x613613
push edi
push dword [esp + 0x34]
call fcn.0056db10
add esp, 8
test eax, eax
je 0x613613
push dword [esp + 0x14]
mov eax, dword [esp + 0x34]
push eax
push eax
call fcn.005acdc0
add esp, 0xc
test eax, eax
je 0x613613
push dword [esp + 0x24]
push ebx
call fcn.005c36a0
add esp, 8
test eax, eax
je 0x613613
push dword [esp + 0x10]
push ebx
push dword [esp + 0x38]
push dword [esp + 0x5c]
push 0
call fcn.005e3910
add esp, 0x14
test eax, eax
je 0x613613
call fcn.0056e1c0
push eax
push dword [esp + 0x54]
push ebx
call fcn.005ace50
add esp, 0xc
test eax, eax
je 0x613613
push ebx
push dword [esp + 0x34]
push dword [esp + 0x20]
call fcn.005ace50
add esp, 0xc
test eax, eax
je 0x613613
push dword [esp + 0x14]
push dword [esp + 0x1c]
call fcn.0056d940
add esp, 8
test eax, eax
js 0x61343f
push dword [esp + 0x1c]
push 1
push dword [esp + 0x18]
push 0x40
push dword [esp + 0x28]
call fcn.005ebe30
add esp, 0x14
test eax, eax
jg 0x61345d
jne 0x613613
mov ecx, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x28], ecx
cmp ecx, 0x1000
jl 0x613290
mov ebp, dword [esp + 0x20]
jmp 0x613075
mov ebp, dword [esp + 0x1c]
push 1
push 2
push ebp
call fcn.005eb950
add esp, 0xc
test eax, eax
je 0x613613
call fcn.0056e1c0
push eax
push dword [esp + 0x1c]
push dword [esp + 0x1c]
call fcn.005ace50
add esp, 0xc
test eax, eax
je 0x613613
mov edi, dword [esp + 0x10]
push edi
push dword [esp + 0x28]
push dword [esp + 0x1c]
push 0
push ebx
call fcn.005e3910
add esp, 0x14
test eax, eax
je 0x613613
push 2
push dword [esp + 0x18]
call fcn.0056e110
add esp, 8
test eax, eax
je 0x613613
push edi
push dword [esp + 0x1c]
push dword [esp + 0x40]
call fcn.005a7610
add esp, 0xc
test eax, eax
je 0x613613
push dword [esp + 0x38]
push edi
push dword [esp + 0x20]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x48]
call fcn.005e1c00
add esp, 0x18
test eax, eax
je 0x613613
push dword [esp + 0x34]
call fcn.0056dd40
add esp, 4
test eax, eax
je 0x613558
call fcn.0056e1c0
push eax
mov eax, dword [esp + 0x18]
push eax
push eax
call fcn.005acdc0
add esp, 0xc
test eax, eax
je 0x613613
push dword [esp + 0x38]
inc dword [esp + 0x48]
push edi
push dword [esp + 0x20]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x48]
call fcn.005e1c00
add esp, 0x18
test eax, eax
jne 0x613505
jmp 0x613613
push 1
push 3
push ebp
call fcn.005eb950
add esp, 0xc
test eax, eax
je 0x613613
mov dword [esp + 0x48], 1
nop word [eax + eax]
mov ebx, dword [esp + 0x54]
push dword [ebx + 8]
call fcn.0056dc50
push dword [ebx + 0xc]
call fcn.0056dc50
push dword [ebx + 0x10]
call fcn.0056dc50
push dword [esp + 0x24]
call fcn.0056db80
push dword [esp + 0x34]
mov dword [ebx + 8], eax
call fcn.0056db80
push dword [esp + 0x48]
mov dword [ebx + 0xc], eax
call fcn.0056db80
add esp, 0x18
mov dword [ebx + 0x10], eax
cmp dword [ebx + 8], 0
je 0x61360b
cmp dword [ebx + 0xc], 0
je 0x61360b
test eax, eax
je 0x61360b
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x6135e1
mov eax, dword [esp + 0x28]
mov dword [ecx], eax
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x6135ef
mov eax, dword [esp + 0x44]
mov dword [ecx], eax
mov eax, dword [esp + 0x60]
test eax, eax
je 0x613613
push esi
lea ecx, [esp + 0xc8]
push ecx
push eax
call fcn.004b9750
add esp, 0xc
jmp 0x613613
mov dword [esp + 0x48], 0
mov ebp, dword [esp + 0x10]
push ebp
call fcn.005ac9a0
push ebp
call fcn.005aca10
push dword [esp + 0x40]
call fcn.005a7540
mov eax, dword [esp + 0x54]
add esp, 0xc
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004a1496
add esp, 0xd8
ret