Function at 0x524cf0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc0
call fcn.005650a0
mov eax, dword [0x80100c]
xor eax, esp
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xc4]
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov esi, edx
lea ebx, [esp + 0x8e]
sub ebx, edi
mov dword [esp + 0x28], ebx
lea ecx, [esi + 2]
lea ebp, [esp + 0x8c]
lea edx, [esp + 0x8d]
mov dword [esp + 0x14], esi
sub edx, edi
lea ebx, [esp + 0x8f]
sub esi, edi
sub ebp, edi
sub ebx, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
mov eax, edi
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x10], 8
jmp 0x524d68
mov edx, dword [esp + 0x20]
movzx ebx, byte [esi + eax]
xor bl, byte [eax]
add eax, 4
mov byte [eax + ebp - 4], bl
movzx ebx, byte [eax - 3]
xor bl, byte [ecx - 1]
add ecx, 4
mov byte [edx + eax - 4], bl
movzx edx, byte [eax - 2]
xor dl, byte [ecx - 4]
mov ebx, dword [esp + 0x28]
mov byte [ebx + eax - 4], dl
movzx edx, byte [eax - 1]
xor dl, byte [ecx - 3]
sub dword [esp + 0x10], 1
mov ebx, dword [esp + 0x24]
mov byte [ebx + eax - 4], dl
jne 0x524d64
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x90]
call fcn.00524bf0
mov ebx, dword [esp + 0x20]
lea ecx, [esp + 0x30]
push ecx
push edi
lea edx, [esp + 0xb8]
push edx
push ebx
call fcn.00524a40
push edi
lea esi, [esp + 0x64]
call fcn.00524c50
mov ebp, dword [esp + 0x2c]
push ebp
lea esi, [esp + 0x88]
call fcn.00524c50
mov eax, esi
push eax
call fcn.00524c50
add esp, 0x20
xor eax, eax
lea esp, [esp]
movzx ecx, byte [esp + eax + 0x6c]
movzx edx, byte [esp + eax + 0x4d]
xor cl, byte [esp + eax + 0x4c]
xor dl, byte [esp + eax + 0x6d]
mov byte [esp + eax + 0x8c], cl
movzx ecx, byte [esp + eax + 0x4e]
xor cl, byte [esp + eax + 0x6e]
mov byte [esp + eax + 0x8d], dl
movzx edx, byte [esp + eax + 0x4f]
xor dl, byte [esp + eax + 0x6f]
mov byte [esp + eax + 0x8e], cl
mov byte [esp + eax + 0x8f], dl
add eax, 4
cmp eax, 0x20
jb 0x524e00
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x90]
call fcn.00524bf0
lea ecx, [esp + 0x38]
push ecx
lea edx, [edi + 8]
push edx
lea eax, [esp + 0xb8]
push eax
push ebx
call fcn.00524a40
lea ecx, [esp + 0x60]
push ecx
mov esi, ecx
call fcn.00524c50
movzx edx, byte [esp + 0x83]
movzx eax, byte [esp + 0x81]
movzx ecx, byte [esp + 0x80]
not dl
mov byte [esp + 0x83], dl
movzx edx, byte [esp + 0x7c]
not al
mov byte [esp + 0x81], al
movzx eax, byte [esp + 0x7b]
not cl
not dl
mov byte [esp + 0x80], cl
movzx ecx, byte [esp + 0x78]
mov byte [esp + 0x7c], dl
movzx edx, byte [esp + 0x76]
not al
mov byte [esp + 0x7b], al
movzx eax, byte [esp + 0x75]
not cl
not dl
mov byte [esp + 0x78], cl
movzx ecx, byte [esp + 0x72]
mov byte [esp + 0x76], dl
movzx edx, byte [esp + 0x70]
not al
mov byte [esp + 0x75], al
movzx eax, byte [esp + 0x6e]
not cl
not dl
mov byte [esp + 0x72], cl
movzx ecx, byte [esp + 0x6c]
mov byte [esp + 0x70], dl
movzx edx, byte [esp + 0x6b]
not al
mov byte [esp + 0x6e], al
movzx eax, byte [esp + 0x69]
not cl
not dl
mov byte [esp + 0x6c], cl
movzx ecx, byte [esp + 0x67]
mov byte [esp + 0x6b], dl
movzx edx, byte [esp + 0x65]
not al
mov byte [esp + 0x69], al
lea eax, [esp + 0x84]
not cl
not dl
push eax
mov esi, eax
mov byte [esp + 0x6b], cl
mov byte [esp + 0x69], dl
call fcn.00524c50
mov ecx, esi
push ecx
call fcn.00524c50
add esp, 0x20
xor eax, eax
lea ecx, [ecx]
movzx edx, byte [esp + eax + 0x6c]
movzx ecx, byte [esp + eax + 0x4d]
xor dl, byte [esp + eax + 0x4c]
xor cl, byte [esp + eax + 0x6d]
mov byte [esp + eax + 0x8c], dl
movzx edx, byte [esp + eax + 0x4e]
xor dl, byte [esp + eax + 0x6e]
mov byte [esp + eax + 0x8d], cl
movzx ecx, byte [esp + eax + 0x4f]
xor cl, byte [esp + eax + 0x6f]
mov byte [esp + eax + 0x8e], dl
mov byte [esp + eax + 0x8f], cl
add eax, 4
cmp eax, 0x20
jb 0x524f60
lea edx, [esp + 0xac]
push edx
lea ecx, [esp + 0x90]
call fcn.00524bf0
lea eax, [esp + 0x40]
push eax
lea ecx, [edi + 0x10]
push ecx
lea edx, [esp + 0xb8]
push edx
push ebx
call fcn.00524a40
lea eax, [esp + 0x60]
push eax
mov esi, eax
call fcn.00524c50
lea ecx, [esp + 0x84]
push ecx
mov esi, ecx
call fcn.00524c50
mov edx, esi
push edx
call fcn.00524c50
add esp, 0x20
xor eax, eax
jmp 0x525000
movzx ecx, byte [esp + eax + 0x6c]
movzx edx, byte [esp + eax + 0x4d]
xor cl, byte [esp + eax + 0x4c]
xor dl, byte [esp + eax + 0x6d]
mov byte [esp + eax + 0x8c], cl
movzx ecx, byte [esp + eax + 0x4e]
xor cl, byte [esp + eax + 0x6e]
mov byte [esp + eax + 0x8d], dl
movzx edx, byte [esp + eax + 0x4f]
xor dl, byte [esp + eax + 0x6f]
mov byte [esp + eax + 0x8e], cl
mov byte [esp + eax + 0x8f], dl
add eax, 4
cmp eax, 0x20
jb 0x525000
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x90]
call fcn.00524bf0
lea ecx, [esp + 0x48]
push ecx
lea edx, [edi + 0x18]
push edx
lea eax, [esp + 0xb8]
push eax
push ebx
call fcn.00524a40
mov bl, byte [esp + 0x5f]
mov al, byte [esp + 0x5e]
add esp, 0x14
mov esi, 0xc
xor bl, byte [esp + 0x45]
xor al, byte [esp + 0x44]
xor bl, byte [esp + 0x33]
xor al, byte [esp + 0x32]
xor bl, byte [esp + 0x31]
xor al, byte [esp + 0x30]
xor bl, byte [esp + 0x2f]
xor al, byte [esp + 0x2e]
xor bl, byte [esp + 0x2d]
xor al, byte [esp + 0x2c]
movzx cx, bl
movzx dx, al
shl cx, 8
or cx, dx
push 0x1e
lea eax, [esp + 0x32]
movzx ebx, cx
push eax
lea ecx, [esp + 0x34]
push ecx
call fcn.00567d20
mov al, bl
shr ebx, 8
add esp, 0xc
sub esi, 1
mov byte [esp + 0x4a], al
mov byte [esp + 0x4b], bl
jne 0x525083
lea edx, [esp + 0x2c]
xor ecx, ecx
sub ebp, edx
jmp 0x5250f0
mov esi, dword [esp + 0x18]
lea eax, [esp + ecx + 0x2c]
movzx edx, byte [eax + ebp]
xor byte [eax], dl
movzx edx, byte [esi + ecx - 1]
xor byte [eax + 1], dl
movzx edx, byte [esi + ecx]
xor byte [eax + 2], dl
movzx edx, byte [esi + ecx + 1]
xor byte [eax + 3], dl
add ecx, 4
cmp ecx, 0x20
jb 0x5250f0
mov al, byte [esp + 0x4b]
xor al, byte [esp + 0x45]
mov dl, byte [esp + 0x4a]
xor dl, byte [esp + 0x44]
xor al, byte [esp + 0x33]
xor dl, byte [esp + 0x32]
xor al, byte [esp + 0x31]
xor dl, byte [esp + 0x30]
xor al, byte [esp + 0x2f]
xor dl, byte [esp + 0x2e]
xor al, byte [esp + 0x2d]
xor dl, byte [esp + 0x2c]
movzx cx, al
movzx ax, dl
shl cx, 8
or cx, ax
movzx ebx, cx
push 0x1e
lea ecx, [esp + 0x32]
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.00567d20
mov byte [esp + 0x56], bl
shr ebx, 8
mov esi, edi
lea eax, [esp + 0x38]
add esp, 0xc
xor ecx, ecx
mov byte [esp + 0x4b], bl
sub esi, eax
jmp 0x525190
lea eax, [esp + ecx + 0x2c]
movzx edx, byte [esi + eax]
xor byte [eax], dl
movzx edx, byte [edi + ecx + 1]
xor byte [eax + 1], dl
movzx edx, byte [edi + ecx + 2]
xor byte [eax + 2], dl
movzx edx, byte [edi + ecx + 3]
xor byte [eax + 3], dl
add ecx, 4
cmp ecx, 0x20
jb 0x525190
mov bl, byte [esp + 0x4b]
mov al, byte [esp + 0x4a]
mov esi, 0x3d
jmp 0x5251d0
xor bl, byte [esp + 0x45]
xor al, byte [esp + 0x44]
xor bl, byte [esp + 0x33]
xor al, byte [esp + 0x32]
xor bl, byte [esp + 0x31]
xor al, byte [esp + 0x30]
xor bl, byte [esp + 0x2f]
xor al, byte [esp + 0x2e]
xor bl, byte [esp + 0x2d]
xor al, byte [esp + 0x2c]
movzx cx, bl
movzx dx, al
shl cx, 8
or cx, dx
push 0x1e
lea eax, [esp + 0x32]
movzx ebx, cx
push eax
lea ecx, [esp + 0x34]
push ecx
call fcn.00567d20
mov al, bl
shr ebx, 8
add esp, 0xc
sub esi, 1
mov byte [esp + 0x4a], al
mov byte [esp + 0x4b], bl
jne 0x5251d0
mov ecx, 8
lea esi, [esp + 0x2c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0xcc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
mov eax, 1
call fcn.005635df
add esp, 0xc0
ret