Function at 0x549de0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x44
test byte [0x725e50], 1
jne 0x549e5e
mov eax, dword [0x81eb88]
mov edx, dword [0x81eea8]
mov dword [0x81ed40], eax
mov dword [0x81eea0], edx
cmp dword [0x81ea58], 1
jne 0x549e4a
test byte [0x725e50], 1
lea eax, [esp + 0x24]
mov edx, dword [0x6c5a18]
cmovne edx, dword [0x6c8b68]
push eax
push edx
push 0x81eeb0
call fcn.0044a9d0
add esp, 0xc
call fcn.005494e0
add esp, 0x44
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0x81eeb0
call fcn.0044d500
add esp, 0x48
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [0x81ee7c]
mov dword [esp + 0x3c], eax
mov dword [0x725e40], eax
test eax, eax
jle 0x549f5e
mov edx, dword [0x6c8b10]
xor ecx, ecx
shl edx, 7
xor eax, eax
neg edx
xor ebx, ebx
add edx, dword [0x6c8af0]
pxor xmm0, xmm0
mov esi, dword [esp + 0x3c]
inc ecx
movsd qword [eax + edx + 0xc8], xmm0
movsd qword [eax + edx + 0xd0], xmm0
movsd qword [eax + edx + 0xd8], xmm0
movsd qword [eax + edx + 0xe0], xmm0
movsd qword [eax + edx + 0xe8], xmm0
mov dword [eax + edx + 0xb4], ebx
mov dword [eax + edx + 0xb8], ebx
mov dword [eax + edx + 0xbc], ebx
mov dword [eax + edx + 0xc0], ebx
mov dword [eax + edx + 0xc4], ebx
mov dword [eax + edx + 0x80], ebx
mov dword [eax + edx + 0x88], ebx
mov dword [eax + edx + 0x8c], ebx
mov dword [eax + edx + 0x90], ebx
mov dword [eax + edx + 0x94], ebx
mov dword [eax + edx + 0x98], ebx
mov dword [eax + edx + 0x9c], ebx
mov dword [eax + edx + 0xa0], ebx
mov dword [eax + edx + 0xa4], ebx
mov dword [eax + edx + 0xa8], ebx
mov dword [eax + edx + 0xac], ebx
mov dword [eax + edx + 0x84], ebx
mov dword [eax + edx + 0xb0], ebx
movsd qword [eax + edx + 0xf0], xmm0
movsd qword [eax + edx + 0xf8], xmm0
add eax, 0x80
cmp ecx, esi
jb 0x549e93
mov edx, dword [0x81e668]
xor eax, eax
mov dword [0x81eea0], eax
mov dword [0x81ed40], eax
mov dword [esp + 0x1c], edx
test edx, edx
jle 0x54a0ab
mov eax, dword [0x6c8bb0]
xor edi, edi
shl eax, 2
neg eax
add eax, dword [0x6c8b90]
mov dword [esp + 0x34], eax
imul eax, dword [0x6c8ae8], 0xffffffc8
add eax, dword [0x6c8ac8]
mov edx, dword [0x6c8b60]
mov dword [esp + 0x14], eax
mov esi, dword [0x6c8b38]
shl edx, 2
mov eax, dword [0x6c5ad0]
neg edx
shl esi, 2
shl eax, 2
neg esi
mov ebx, dword [0x6c8b10]
neg eax
shl ebx, 7
mov ecx, dword [0x6c8af0]
add edx, dword [0x6c8b40]
sub ecx, ebx
mov dword [esp + 8], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x28], edi
add esi, dword [0x6c8b18]
add eax, dword [0x6c5ab0]
mov dword [esp + 0xc], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], esi
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 8]
cmp dword [esp + 0x3c], 0
lea esi, [edi + 1]
jle 0x54a088
xor eax, eax
mov dword [esp + 0x18], ebx
xor ecx, ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x28], edi
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x38]
cmp esi, dword [ecx + ebx + 0x38]
jne 0x54a072
inc edx
mov edi, edx
shl edi, 7
add edi, dword [esp + 0x20]
mov dword [esp + 0x30], edi
mov dword [edi], esi
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
inc dword [esi + edi*4 + 4]
mov esi, dword [ecx + ebx + 0x6c]
mov dword [esp + 0x2c], esi
test esi, esi
jg 0x54a21b
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov dword [ecx + ebx + 0x68], edx
mov dword [esi + edi*4 + 4], 0xffffffff
inc eax
add ecx, 0x38
cmp eax, dword [esp + 0x3c]
jb 0x54a028
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x18]
cmp edx, ebx
jle 0x54a09f
mov eax, dword [esp + 0xc]
inc ebx
mov ecx, dword [esp + 0x10]
mov dword [eax + edi*4 + 4], ebx
mov ebx, edx
mov dword [ecx + edi*4 + 4], edx
mov edi, esi
cmp esi, dword [esp + 0x1c]
jb 0x54a00a
movzx esi, byte [0x6c8b75]
mov eax, 4
and esi, 1
mov ecx, 1
shl esi, 0x15
xor edx, edx
mov ebx, dword [0x6c8ba8]
add esi, 0x40000
mov dword [esp + 4], eax
lea edi, [esp]
mov dword [edi + 0x10], ecx
mov dword [edi + 8], edx
mov dword [edi + 0x1c], eax
mov dword [edi + 0x20], ecx
mov dword [edi + 0x18], ebx
mov dword [edi], edx
mov dword [edi + 0xc], ecx
push esi
push edi
push 0x6c8b68
call fcn.005d7540
add esp, 0xc
test ebx, ebx
jle 0x54a148
mov edx, dword [0x6c8b68]
mov esi, dword [0x6c8b90]
mov ecx, dword [0x6c5ad8]
cmp ebx, 4
jl 0x54a214
mov eax, ebx
xor edi, edi
and eax, 0xfffffffc
movdqu xmm0, xmmword [ecx + edi*4]
paddd xmm0, xmmword [esi + edi*4]
movdqu xmmword [edx + edi*4], xmm0
add edi, 4
cmp edi, eax
jb 0x54a120
cmp eax, ebx
jae 0x54a148
mov edi, dword [ecx + eax*4]
add edi, dword [esi + eax*4]
mov dword [edx + eax*4], edi
inc eax
cmp eax, ebx
jb 0x54a13a
mov ebx, dword [0x6c8b80]
test ebx, ebx
jle 0x54a1e5
mov edx, dword [0x6c8b68]
cmp ebx, 4
jl 0x54a20b
mov eax, ebx
xor ecx, ecx
movdqu xmm0, xmmword [0x6894e0]
and eax, 0xfffffffc
movdqu xmm1, xmmword [edx + ecx*4]
add ecx, 4
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
pand xmm2, xmm1
pxor xmm0, xmm2
cmp ecx, eax
jb 0x54a174
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm0, xmm1
pand xmm2, xmm0
pxor xmm2, xmm1
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm2, xmm0
pand xmm3, xmm2
pxor xmm3, xmm0
movd ecx, xmm3
cmp eax, ebx
jae 0x54a1ea
mov esi, dword [edx + eax*4]
cmp esi, ecx
cmovge ecx, esi
inc eax
cmp eax, ebx
jb 0x54a1d6
jmp 0x54a1ea
mov ecx, connect
mov dword [0x81eea0], ecx
lea eax, [ecx - 1]
imul ecx, eax
mov edx, ecx
shr edx, 0x1f
add ecx, edx
sar ecx, 1
inc ecx
mov dword [0x81ed40], ecx
jmp 0x549e0b
mov ecx, connect
xor eax, eax
jmp 0x54a1d2
xor eax, eax
jmp 0x54a136
mov dword [esp + 4], 0
lea esi, [ebx + ecx]
mov dword [esp], eax
mov dword [esp + 8], edx
mov edx, esi
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
mov edi, dword [edx + ebx*8 + 0x40]
mov dword [eax + ebx*8 + 8], edi
mov edi, dword [edx + ebx*8 + 0x44]
mov dword [eax + ebx*8 + 0xc], edi
inc ebx
cmp ebx, esi
jb 0x54a23b
mov eax, dword [esp]
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 8]
jmp 0x54a05e