Function at 0x501eb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x50
call fcn.00629030
mov eax, dword [0x70d514]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0x10]
push ebx
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x14]
push esi
mov esi, edx
mov dword [ebp - 0x38], eax
mov eax, dword [ecx + 0xc]
xor edx, edx
mov dword [ebp - 0x48], ecx
mov ecx, eax
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x2c], edx
call fcn.005015b0
mov ebx, eax
mov dword [ebp - 0x28], ebx
test esi, esi
jne 0x501f36
push 0x143
push 0x6d6d38
push 0x9f
mov edx, 0xa2
lea ecx, [esi + 6]
call fcn.004818c0
add esp, 0xc
or eax, 0xffffffff
jmp 0x501f39
mov eax, dword [esi + 8]
xor esi, esi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x14], 0
test ebx, ebx
je 0x502352
test eax, eax
jle 0x502352
mov eax, dword [ebp - 0x38]
push dword [eax]
push 0xff
push dword [ebp - 0x10]
call fcn.0062c160
push 0x6ad7c4
push edi
lea edx, [ebp - 0xc]
xor ecx, ecx
call fcn.00498260
mov edx, eax
add esp, 0x14
mov dword [ebp - 0x44], edx
test edx, edx
jne 0x501f94
push 0x11d
push 0x6e8990
push 0x64
jmp 0x502342
mov ecx, dword [edx + 8]
mov eax, dword [ebp - 0x34]
cmp dword [ecx], eax
je 0x501faf
push 0x122
push 0x6e8990
push 0x68
jmp 0x502342
mov eax, dword [edx + 0xc]
mov ecx, dword [ecx + 8]
mov dword [ebp - 8], ecx
mov edi, dword [eax]
mov ebx, dword [eax + 8]
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x30], edi
cmp dword [eax], edi
jae 0x501fd8
push 0x12a
push 0x6e8990
push 0x6b
jmp 0x502342
call fcn.004a06d0
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x501fee
push 0x130
jmp 0x50233b
mov ecx, eax
call fcn.004a0870
mov ecx, dword [ebp - 0x20]
call fcn.004a09e0
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x3c], eax
call fcn.004a09e0
mov dword [ebp - 0x40], eax
test eax, eax
jne 0x502020
push 0x139
push 0x6e8990
push 3
jmp 0x502342
push ecx
mov ecx, edi
call fcn.00472a20
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x28]
add eax, eax
mov ecx, eax
mov dword [ebp - 0x4c], eax
call fcn.00472a20
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x18], eax
call fcn.00472a20
add esp, 4
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x14], esi
je 0x502336
cmp dword [ebp - 0x18], esi
je 0x502336
test eax, eax
je 0x502336
mov ecx, dword [ebp - 0x24]
call fcn.004b34a0
mov dword [ebp - 0x1c], eax
test eax, eax
jne 0x50207e
push 0x148
jmp 0x50233b
mov ecx, dword [ebp - 0x44]
mov edx, eax
push dword [ebp - 0x20]
push dword [ecx + 4]
push dword [ecx]
mov ecx, dword [ebp - 0x24]
call fcn.004b3610
add esp, 0xc
test eax, eax
je 0x502328
mov eax, dword [ebp - 0x48]
push dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
push dword [eax + 0x14]
mov eax, dword [ebp - 0x1c]
mov edx, eax
push eax
push 0
call fcn.004b3b30
add esp, 0x10
test eax, eax
je 0x502328
push dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
push dword [ebp - 0x40]
mov ecx, dword [ebp - 0x24]
push dword [ebp - 0x3c]
call fcn.004b36b0
add esp, 0xc
test eax, eax
je 0x502328
push dword [ebp - 0x28]
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x3c]
call fcn.00474ed0
add esp, 4
test eax, eax
js 0x50231a
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x18]
add eax, ecx
push ecx
mov ecx, dword [ebp - 0x40]
mov edx, eax
mov dword [ebp - 0x24], eax
call fcn.00474ed0
add esp, 4
test eax, eax
js 0x50231a
push dword [ebp - 0x50]
mov ecx, dword [ebp - 0x14]
mov edx, edi
push 0
push 0
push dword [ebp - 0x4c]
push dword [ebp - 0x18]
call fcn.00503180
add esp, 0x14
test eax, eax
je 0x50231a
xor esi, esi
test edi, edi
je 0x502242
mov edx, dword [ebp - 0x14]
cmp edi, 0x40
jb 0x50221a
mov ecx, dword [ebp - 0x10]
lea eax, [edx - 1]
dec ecx
add eax, edi
add ecx, edi
cmp dword [ebp - 0x10], eax
ja 0x50216b
cmp ecx, edx
jae 0x50221a
lea eax, [ebx - 1]
add eax, edi
cmp dword [ebp - 0x10], eax
ja 0x50217d
cmp ecx, ebx
jae 0x50221a
mov eax, edi
and eax, 0x8000003f
jns 0x50218b
dec eax
or eax, 0xffffffc0
inc eax
mov ecx, edi
mov edi, ebx
sub edi, edx
sub ecx, eax
mov dword [ebp - 0x4c], edi
lea eax, [edx + 0x10]
mov edi, dword [ebp - 0x10]
sub edi, edx
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x10]
mov edx, ebx
add ecx, 0x20
mov dword [ebp - 0x48], edi
sub edx, dword [ebp - 0x10]
mov dword [ebp - 0x40], edx
mov edx, dword [ebp - 0x4c]
movups xmm0, xmmword [eax - 0x10]
mov edi, dword [ebp - 0x48]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + ebx]
lea ecx, [ecx + 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [ecx - 0x60], xmm1
movups xmm1, xmmword [edx + eax - 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [edi + eax - 0x40], xmm1
mov edi, dword [ebp - 0x40]
movups xmm1, xmmword [edi + ecx - 0x40]
mov edi, dword [ebp - 0x30]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [ecx - 0x40], xmm1
movups xmm1, xmmword [esi + ebx + 0x30]
add esi, 0x40
pxor xmm1, xmm0
movups xmmword [ecx - 0x30], xmm1
cmp esi, dword [ebp - 0x3c]
jne 0x5021b5
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x30], esi
cmp esi, edi
je 0x502242
mov eax, dword [ebp - 0x10]
lea ecx, [esi + edx]
sub eax, edx
sub ebx, edx
mov edx, edi
mov dword [ebp - 0x30], eax
sub edx, esi
mov esi, eax
nop dword [eax]
mov al, byte [ebx + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [esi + ecx - 1], al
sub edx, 1
jne 0x502230
call fcn.00478310
mov esi, eax
test esi, esi
jne 0x502257
push 0x162
jmp 0x50233b
push dword [ebp - 0x50]
push esi
call fcn.00478360
add esp, 8
test eax, eax
je 0x50230c
push dword [ebp - 0x28]
mov ebx, dword [ebp - 0x18]
mov eax, dword [esi + 0x14]
push ebx
push esi
call eax
add esp, 0xc
test eax, eax
je 0x50230c
test edi, edi
je 0x502298
mov eax, dword [esi + 0x14]
push edi
push dword [ebp - 0x10]
push esi
call eax
add esp, 0xc
test eax, eax
je 0x50230c
push dword [ebp - 0x28]
mov eax, dword [esi + 0x14]
push dword [ebp - 0x24]
push esi
call eax
add esp, 0xc
test eax, eax
je 0x50230c
mov edx, dword [ebp - 0x2c]
mov ecx, esi
push 0
call fcn.00478610
add esp, 4
test eax, eax
je 0x50230c
push dword [ebp - 0x34]
push dword [ebp - 8]
push dword [ebp - 0x2c]
call fcn.00401390
add esp, 0xc
test eax, eax
je 0x5022e1
push 0x170
push 0x6e8990
push 0x66
jmp 0x502342
mov eax, dword [ebp - 0x38]
push dword [ebp - 0x14]
mov dword [eax], edi
call fcn.0062fb07
push ebx
call fcn.0062fb07
push dword [ebp - 0x2c]
call fcn.0062fb07
mov ebx, dword [ebp - 0x1c]
add esp, 0xc
mov edi, 1
jmp 0x50238b
push 0x16b
push 0x6e8990
push 6
jmp 0x502342
push 0x159
push 0x6e8990
push 0x44
jmp 0x502342
push 0x151
push 0x6e8990
push 0x10
jmp 0x502342
push 0x142
push 0x6e8990
push 0x41
mov edx, 0x66
lea ecx, [edx - 0x31]
call fcn.004818c0
add esp, 0xc
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x38]
push dword [eax]
push 0
push dword [ebp - 0x10]
call fcn.0062c160
push dword [ebp - 0x14]
call fcn.0062fb07
push dword [ebp - 0x18]
call fcn.0062fb07
push dword [ebp - 0x2c]
call fcn.0062fb07
mov ebx, dword [ebp - 0x1c]
add esp, 0x18
xor edi, edi
test ebx, ebx
je 0x5023a3
mov eax, dword [ebx]
mov eax, dword [eax + 0x30]
test eax, eax
je 0x50239a
push ebx
call eax
add esp, 4
push ebx
call fcn.0062fb07
add esp, 4
mov ecx, dword [ebp - 0x20]
call fcn.004a0770
mov eax, dword [ebp - 0x44]
lea ecx, [ebp - 8]
push 0
mov edx, 0x6ad7c4
mov dword [ebp - 8], eax
call fcn.0049aaf0
mov ecx, esi
call fcn.00478250
push esi
call fcn.0062fb07
mov ecx, dword [ebp - 4]
add esp, 8
mov eax, edi
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.00628f0a
mov esp, ebp
pop ebp
ret