Function at 0x501830
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x6c
call fcn.00629030
mov eax, dword [0x70d514]
xor eax, esp
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x10]
push edi
mov edi, ecx
mov dword [esp + 0x60], eax
mov eax, dword [ebp + 0x14]
push 0x18
mov dword [esp + 0x38], edx
mov dword [esp + 0x30], edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x48], 0
mov dword [esp + 0x14], 0
mov dword [0x70e32c], 0
call fcn.0063320d
mov esi, eax
add esp, 4
mov dword [esp + 0x54], esi
test esi, esi
je 0x5018a9
xorps xmm0, xmm0
movups xmmword [esi], xmm0
movq qword [esi + 0x10], xmm0
mov edi, dword [edi + 0xc]
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], 0
mov eax, dword [edi + 8]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x14], 0
mov dword [esp + 0x40], 0
mov eax, dword [eax + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x501912
push 0x143
push 0x6d6d38
push 0x9f
mov edx, 0xa2
lea ecx, [eax + 6]
call fcn.004818c0
add esp, 0xc
or eax, 0xffffffff
jmp 0x501915
mov eax, dword [eax + 8]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
test esi, esi
je 0x501d99
test eax, eax
jle 0x501d99
mov ecx, edi
call fcn.005015b0
mov dword [esp + 0x38], eax
test eax, eax
jne 0x501952
push 0x8a
jmp 0x501d9e
mov ecx, edi
call fcn.004b34a0
mov ecx, edi
mov dword [esp + 0x20], eax
call fcn.004b34a0
mov dword [esp + 0x24], eax
call fcn.004a06d0
cmp dword [esp + 0x20], 0
mov dword [esp + 0x10], eax
je 0x501d8b
cmp dword [esp + 0x24], 0
je 0x501d8b
test eax, eax
je 0x501d8b
mov ecx, eax
call fcn.004a0870
mov ecx, dword [esp + 0x10]
call fcn.004a09e0
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x30], eax
call fcn.004a09e0
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x58], eax
call fcn.004a09e0
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x4c], eax
call fcn.004a09e0
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x2c], eax
call fcn.004a09e0
mov dword [esp + 0x50], eax
test eax, eax
jne 0x5019ec
push 0x9e
push 0x6e8990
push 3
jmp 0x501da5
mov eax, dword [esp + 0x38]
add eax, eax
push ecx
mov ecx, eax
call fcn.00472a20
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x18], eax
call fcn.00472a20
add esp, 4
mov dword [esp + 0x40], eax
cmp dword [esp + 0x14], 0
je 0x501d7d
test eax, eax
je 0x501d7d
mov eax, dword [esp + 0x5c]
push dword [eax]
push 0
push dword [esp + 0x68]
call fcn.0062c160
mov edx, dword [esp + 0x3c]
add esp, 0xc
push dword [esp + 0x48]
call fcn.004db880
add esp, 4
test eax, eax
jne 0x501a53
push 0xad
jmp 0x501d9e
push dword [esp + 0x10]
mov edx, dword [esp + 0x24]
mov ecx, edi
push 0
push 0
push dword [esp + 0x3c]
call fcn.004b3b30
add esp, 0x10
test eax, eax
je 0x501d6f
push dword [esp + 0x10]
mov edx, dword [esp + 0x24]
mov ecx, edi
push dword [esp + 0x30]
push dword [esp + 0x60]
call fcn.004b36b0
add esp, 0xc
test eax, eax
je 0x501d6f
push dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov ecx, edi
push dword [esp + 0x34]
push dword [esp + 0x30]
push 0
call fcn.004b3b30
add esp, 0x10
test eax, eax
je 0x501d6f
push dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov ecx, edi
push dword [esp + 0x54]
push dword [esp + 0x54]
call fcn.004b36b0
add esp, 0xc
test eax, eax
je 0x501d6f
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x4c]
push edi
call fcn.00474ed0
add esp, 4
test eax, eax
js 0x501d68
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
add edx, edi
push edi
call fcn.00474ed0
add esp, 4
test eax, eax
js 0x501d68
push ecx
mov ecx, ebx
call fcn.00472a20
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x501b39
push 0xc1
push 0x6e8990
push 0x41
jmp 0x501da5
push dword [esp + 0x34]
lea ecx, [edi + edi]
mov edx, ebx
push 0
push 0
push ecx
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, eax
call fcn.00503180
add esp, 0x14
test eax, eax
jne 0x501b6b
push 0xc8
push 0x6e8990
push 6
jmp 0x501da5
xor edi, edi
test ebx, ebx
je 0x501c42
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
cmp ebx, 0x40
jb 0x501c20
dec eax
lea ecx, [edx - 1]
add eax, ebx
add ecx, ebx
cmp edx, eax
ja 0x501b9e
mov eax, dword [esp + 0x18]
cmp ecx, eax
jae 0x501c20
mov esi, dword [esp + 0x18]
mov eax, ebx
and eax, 0xffffffc0
mov dword [esp + 0x48], eax
lea eax, [edx + 0x10]
lea ecx, [esi + 0x30]
sub esi, edx
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x54]
mov edx, dword [esp + 0x28]
nop
movups xmm0, xmmword [eax - 0x10]
add edi, 0x40
lea ecx, [ecx + 0x40]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx - 0x70]
pxor xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [edx + eax - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ecx - 0x50]
pxor xmm1, xmm0
movups xmm0, xmmword [ecx - 0x40]
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [eax - 0x20]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edi, dword [esp + 0x48]
jne 0x501bc0
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], edi
cmp edi, ebx
je 0x501c42
mov eax, dword [esp + 0x18]
mov esi, eax
lea ecx, [edi + edx]
sub esi, edx
mov edx, ebx
sub edx, edi
nop dword [eax + eax]
mov al, byte [ecx + esi]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x501c30
mov esi, dword [esp + 0x54]
push dword [esp + 0x34]
push esi
call fcn.00478360
add esp, 8
test eax, eax
je 0x501d5a
mov edi, dword [esp + 0x38]
mov eax, dword [esi + 0x14]
push edi
push dword [esp + 0x18]
push esi
call eax
add esp, 0xc
test eax, eax
je 0x501d5a
test ebx, ebx
je 0x501c8b
mov eax, dword [esi + 0x14]
push ebx
push dword [esp + 0x1c]
push esi
call eax
add esp, 0xc
test eax, eax
je 0x501d5a
mov eax, dword [esp + 0x14]
add eax, edi
push edi
push eax
mov eax, dword [esi + 0x14]
push esi
call eax
add esp, 0xc
test eax, eax
je 0x501d5a
mov edi, dword [esp + 0x40]
mov ecx, esi
push 0
mov edx, edi
call fcn.00478610
add esp, 4
test eax, eax
je 0x501d5a
mov eax, dword [esp + 0x58]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x68], eax
call fcn.004760c0
mov dword [esp + 0x6c], eax
call fcn.004760c0
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x70], eax
test ecx, ecx
je 0x501d4c
test eax, eax
je 0x501d4c
push dword [esp + 0x3c]
mov edx, edi
call fcn.00475f90
add esp, 4
test eax, eax
je 0x501d45
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x70]
push ebx
call fcn.00475f90
add esp, 4
test eax, eax
je 0x501d45
push 0
push 0x6ad7c4
lea edx, [esp + 0x68]
lea ecx, [esp + 0x6c]
call fcn.0049aee0
add esp, 8
test eax, eax
jns 0x501d35
push 0xea
jmp 0x501d9e
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x44], 1
mov dword [ecx], eax
jmp 0x501db5
push 0xe3
jmp 0x501d9e
push 0xde
push 0x6e8990
push 0x41
jmp 0x501da5
push 0xd4
push 0x6e8990
push 6
jmp 0x501da5
push 0xbb
jmp 0x501d9e
push 0xb5
push 0x6e8990
push 0x10
jmp 0x501da5
push 0xa6
push 0x6e8990
push 0x41
jmp 0x501da5
push 0x92
push 0x6e8990
push 0x41
jmp 0x501da5
push 0x84
push 0x6e8990
push 0x44
mov edx, 0x67
lea ecx, [edx - 0x32]
call fcn.004818c0
add esp, 0xc
mov edi, dword [esp + 0x70]
test edi, edi
je 0x501de4
mov eax, dword [edi + 0xc]
mov ebx, eax
and ebx, 0x80
test al, 0x10
jne 0x501dd7
push dword [edi + 8]
call fcn.0062fb07
add esp, 4
test ebx, ebx
jne 0x501de4
push edi
call fcn.0062fb07
add esp, 4
mov edi, dword [esp + 0x6c]
test edi, edi
je 0x501e13
mov eax, dword [edi + 0xc]
mov ebx, eax
and ebx, 0x80
test al, 0x10
jne 0x501e06
push dword [edi + 8]
call fcn.0062fb07
add esp, 4
test ebx, ebx
jne 0x501e13
push edi
call fcn.0062fb07
add esp, 4
push dword [esp + 0x1c]
call fcn.0062fb07
add esp, 4
push dword [esp + 0x14]
call fcn.0062fb07
add esp, 4
push dword [esp + 0x40]
call fcn.0062fb07
add esp, 4
mov ecx, esi
call fcn.00478250
push esi
call fcn.0062fb07
mov ecx, dword [esp + 0x14]
add esp, 4
call fcn.004a0770
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x501e70
mov eax, dword [ebx]
mov eax, dword [eax + 0x30]
test eax, eax
je 0x501e67
push ebx
call eax
add esp, 4
push ebx
call fcn.0062fb07
add esp, 4
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x501e90
mov eax, dword [ebx]
mov ecx, dword [eax + 0x30]
test ecx, ecx
je 0x501e87
push ebx
call ecx
add esp, 4
push ebx
call fcn.0062fb07
add esp, 4
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x44]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00628f0a
mov esp, ebp
pop ebp
ret