Function at 0x531590
Capabilities:
Encode data using add xor sub operations
Encode data using xor

Disassembly:
mov eax, 0xa4
call fcn.0040c2f0
mov eax, dword [0x59c024]
xor eax, esp
mov dword [esp + 0xa0], eax
push ebx
push ebp
mov ebp, dword [esp + 0xb8]
lea eax, [esp + 0x68]
push esi
mov esi, dword [esp + 0xb4]
push edi
mov edi, dword [esp + 0xbc]
push 0x20
push ebp
push edi
push eax
call fcn.005319f0
lea eax, [esp + 0xa0]
push eax
lea eax, [esp + 0x84]
push eax
call fcn.00531990
lea eax, [esp + 0x28]
push eax
push edi
lea eax, [esp + 0xb0]
push eax
push esi
call fcn.0052f740
lea eax, [esp + 0x58]
push eax
push edi
call fcn.00531160
lea eax, [esp + 0x80]
push eax
push ebp
call fcn.00531160
lea eax, [esp + 0x88]
push eax
push eax
call fcn.00531160
add esp, 0x40
lea eax, [esp + 0x50]
push 0x20
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x7c]
push eax
call fcn.005319f0
lea eax, [esp + 0xa0]
push eax
lea eax, [esp + 0x84]
push eax
call fcn.00531990
lea eax, [esp + 0x30]
push eax
lea eax, [edi + 8]
push eax
lea eax, [esp + 0xb0]
push eax
push esi
call fcn.0052f740
lea eax, [esp + 0x58]
push eax
push eax
call fcn.00531160
not byte [esp + 0x7f]
lea eax, [esp + 0x80]
not byte [esp + 0x7d]
not byte [esp + 0x7c]
not byte [esp + 0x78]
not byte [esp + 0x77]
not byte [esp + 0x74]
not byte [esp + 0x72]
not byte [esp + 0x71]
not byte [esp + 0x6e]
not byte [esp + 0x6c]
not byte [esp + 0x6a]
not byte [esp + 0x68]
not byte [esp + 0x67]
not byte [esp + 0x65]
not byte [esp + 0x63]
not byte [esp + 0x61]
push eax
push eax
call fcn.00531160
lea eax, [esp + 0x88]
push eax
push eax
call fcn.00531160
add esp, 0x40
lea eax, [esp + 0x50]
push 0x20
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x7c]
push eax
call fcn.005319f0
lea eax, [esp + 0xa0]
push eax
lea eax, [esp + 0x84]
push eax
call fcn.00531990
lea eax, [esp + 0x38]
push eax
lea eax, [edi + 0x10]
push eax
lea eax, [esp + 0xb0]
push eax
push esi
call fcn.0052f740
lea eax, [esp + 0x58]
push eax
push eax
call fcn.00531160
lea eax, [esp + 0x80]
push eax
push eax
call fcn.00531160
lea eax, [esp + 0x88]
push eax
push eax
call fcn.00531160
add esp, 0x40
lea eax, [esp + 0x50]
push 0x20
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x7c]
push eax
call fcn.005319f0
lea eax, [esp + 0xa0]
push eax
lea eax, [esp + 0x84]
push eax
call fcn.00531990
lea eax, [esp + 0x40]
push eax
lea eax, [edi + 0x18]
push eax
lea eax, [esp + 0xb0]
push eax
push esi
call fcn.0052f740
mov cl, byte [esp + 0x57]
add esp, 0x28
mov bl, byte [esp + 0x2e]
mov esi, 0xc
nop dword [eax]
movzx eax, byte [esp + 0x11]
xor al, byte [esp + 0x13]
xor al, byte [esp + 0x15]
xor al, byte [esp + 0x17]
xor al, byte [esp + 0x29]
xor al, cl
movzx ecx, al
movzx eax, byte [esp + 0x10]
xor al, byte [esp + 0x12]
xor al, byte [esp + 0x14]
xor al, byte [esp + 0x16]
xor al, byte [esp + 0x28]
xor al, bl
shl cx, 8
movzx eax, al
or cx, ax
lea eax, [esp + 0x12]
push 0x1e
push eax
lea eax, [esp + 0x18]
movzx ebx, cx
push eax
call fcn.00416b60
mov ecx, ebx
mov byte [esp + 0x3a], bl
shr ecx, 8
add esp, 0xc
mov byte [esp + 0x2f], cl
sub esi, 1
jne 0x531790
push 0x20
lea eax, [esp + 0x14]
push ebp
push eax
push eax
call fcn.005319f0
movzx eax, byte [esp + 0x21]
xor al, byte [esp + 0x23]
xor al, byte [esp + 0x25]
xor al, byte [esp + 0x27]
xor al, byte [esp + 0x39]
xor al, byte [esp + 0x3f]
movzx ecx, al
movzx eax, byte [esp + 0x20]
xor al, byte [esp + 0x22]
xor al, byte [esp + 0x24]
xor al, byte [esp + 0x26]
xor al, byte [esp + 0x38]
xor al, byte [esp + 0x3e]
movzx eax, al
shl cx, 8
or cx, ax
lea eax, [esp + 0x22]
push 0x1e
push eax
lea eax, [esp + 0x28]
movzx ebx, cx
push eax
call fcn.00416b60
push 0x20
lea eax, [esp + 0x30]
mov byte [esp + 0x4e], bl
push edi
push eax
shr ebx, 8
push eax
mov byte [esp + 0x5b], bl
call fcn.005319f0
mov al, byte [esp + 0x5b]
add esp, 0x2c
mov bl, byte [esp + 0x2e]
mov esi, 0x3d
nop
mov cl, byte [esp + 0x11]
xor cl, byte [esp + 0x13]
xor cl, byte [esp + 0x15]
xor cl, byte [esp + 0x17]
xor cl, byte [esp + 0x29]
xor cl, al
mov al, byte [esp + 0x10]
xor al, byte [esp + 0x12]
xor al, byte [esp + 0x14]
xor al, byte [esp + 0x16]
xor al, byte [esp + 0x28]
xor al, bl
movzx ecx, cl
movzx eax, al
shl cx, 8
or cx, ax
lea eax, [esp + 0x12]
push 0x1e
push eax
lea eax, [esp + 0x18]
movzx ebx, cx
push eax
call fcn.00416b60
mov eax, ebx
mov byte [esp + 0x3a], bl
shr eax, 8
add esp, 0xc
mov byte [esp + 0x2f], al
sub esi, 1
jne 0x531880
movups xmm0, xmmword [esp + 0x10]
mov ecx, dword [esp + 0xb0]
lea eax, [esi + 1]
movups xmmword [edi], xmm0
movups xmm0, xmmword [esp + 0x20]
movups xmmword [edi + 0x10], xmm0
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0040c19b
add esp, 0xa4
ret