Function at 0x55af90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x300
mov esi, edx
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [esp + 8], ecx
movsd xmm1, qword [esi + 0x30]
movsd xmm2, qword [esi + 0x28]
movsd xmm0, qword [esi + 0x38]
mov ebx, dword [esi + 0x50]
movsd xmm3, qword [esi]
movsd qword [esp + 0x40], xmm1
movsd xmm1, qword [esi + 0x20]
movsd qword [esp + 0x38], xmm2
movsd xmm2, qword [esi + 0x18]
movsd qword [esp + 0x48], xmm0
cmp ebx, eax
movsd qword [esp + 0x30], xmm1
movsd xmm1, qword [esi + 0x10]
movsd qword [esp + 0x28], xmm2
movsd xmm2, qword [esi]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0x10], xmm2
movsd xmm2, qword [esi + 0x10]
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esi + 8]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x58], esi
movsd qword [esp + 0x70], xmm2
movsd xmm2, qword [esi + 0x20]
movsd qword [esp + 0x60], xmm3
movsd qword [esp + 0x68], xmm1
movsd xmm1, qword [esi + 0x18]
movsd qword [esp + 0x80], xmm2
movsd xmm2, qword [esi + 0x30]
movsd qword [esp + 0x78], xmm1
movsd xmm1, qword [esi + 0x28]
movsd qword [esp + 0x90], xmm2
movsd qword [esp + 0x88], xmm1
movsd xmm1, qword [esi + 0x38]
movsd qword [esp + 0x98], xmm1
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa8], esi
jae 0x55b20d
movsd xmm1, qword [esi + 8]
xorps xmm0, xmm0
movsd xmm2, qword [esi + 0x10]
movsd xmm3, qword [esi]
movaps xmmword [esp + 0x200], xmm0
movaps xmmword [esp + 0x1f0], xmm0
movaps xmmword [esp + 0x1e0], xmm0
movaps xmmword [esp + 0x1d0], xmm0
movaps xmmword [esp + 0x1c0], xmm0
movaps xmmword [esp + 0x1b0], xmm0
movaps xmmword [esp + 0x1a0], xmm0
movaps xmmword [esp + 0x190], xmm0
movsd qword [esp + 0x218], xmm1
movsd xmm1, qword [esi + 0x18]
movsd qword [esp + 0x220], xmm2
movsd xmm2, qword [esi + 0x20]
movsd qword [esp + 0x210], xmm3
movsd qword [esp + 0x228], xmm1
movsd xmm1, qword [esi + 0x28]
movsd qword [esp + 0x230], xmm2
movsd xmm2, qword [esi + 0x30]
movsd qword [esp + 0x238], xmm1
movsd xmm1, qword [esi + 0x38]
movsd qword [esp + 0x240], xmm2
movsd qword [esp + 0x248], xmm1
mov dword [esp + 0x254], 0
mov dword [esp + 0x250], 0
mov dword [esp + 0x258], esi
lea esi, [esp + 0x190]
mov dword [esp + 0x260], 0
mov ecx, esi
push eax
call fcn.00557170
add esp, 4
lea eax, [esp + 0xb0]
push 0xd8
push esi
push eax
call fcn.007bd9b0
add esp, 0xc
mov eax, dword [esp + 0x178]
lea esi, [esp + 0x130]
lea edi, [esp + 0x268]
mov ecx, 0x14
mov eax, dword [eax + 0x50]
rep movsd dword es:[edi], dword [esi]
cmp eax, 0x81
jae 0x55b313
lea ecx, [esp + 0x2b8]
lea edx, [esp + 0x268]
push dword [esp + 0x180]
push eax
lea eax, [esp + 0xb8]
push eax
call fcn.00557400
add esp, 0xc
mov eax, dword [esp + 0x2b8]
mov eax, dword [eax + 0x48]
cmp eax, 0x41
jae 0x55b324
lea edx, [esp + 0x2bc]
movaps xmm0, xmmword [str.6666666666666666jjjjjjjjjjjjjjjjjjjjjjjj]
cmp ebx, 0x81
movaps xmmword [esp + 0x120], xmm0
movaps xmmword [esp + 0x110], xmm0
movaps xmmword [esp + 0x100], xmm0
movaps xmmword [esp + 0xf0], xmm0
movaps xmmword [esp + 0xe0], xmm0
movaps xmmword [esp + 0xd0], xmm0
movaps xmmword [esp + 0xc0], xmm0
movaps xmmword [esp + 0xb0], xmm0
jae 0x55b302
cmp ebx, eax
mov edi, ebx
cmovb eax, ebx
test eax, eax
je 0x55b347
xor ecx, ecx
cmp eax, 8
jb 0x55b339
xor ecx, ecx
cmp eax, 0x20
jb 0x55b2ce
mov ecx, eax
xor esi, esi
and ecx, 0xffffffe0
nop dword [eax + eax]
movups xmm0, xmmword [edx + esi]
movups xmm2, xmmword [esp + esi + 0xb0]
movups xmm1, xmmword [edx + esi + 0x10]
movups xmm3, xmmword [esp + esi + 0xc0]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [esp + esi + 0xb0], xmm2
movups xmmword [esp + esi + 0xc0], xmm3
add esi, 0x20
cmp ecx, esi
jne 0x55b290
cmp eax, ecx
je 0x55b347
test al, 0x18
je 0x55b339
mov esi, ecx
mov ecx, eax
and ecx, 0xfffffff8
nop word cs:[eax + eax]
nop
movsd xmm0, qword [edx + esi]
movsd xmm1, qword [esp + esi + 0xb0]
xorps xmm1, xmm0
movlps qword [esp + esi + 0xb0], xmm1
add esi, 8
cmp ecx, esi
jne 0x55b2e0
jmp 0x55b335
mov ecx, ebx
mov edx, 0x80
push 0x89da78
call fcn.007c1c40
mov ecx, eax
mov edx, 0x80
push 0x89cb58
call fcn.007c1c40
mov ecx, eax
mov edx, 0x40
push 0x89f7f8
call fcn.007c1c40
cmp eax, ecx
je 0x55b347
movzx ebx, byte [edx + ecx]
xor byte [esp + ecx + 0xb0], bl
inc ecx
jmp 0x55b335
test edi, edi
je 0x55b4e4
movzx eax, byte [0x94bfc4]
mov ebx, edi
cmp al, 2
jne 0x55b428
mov eax, dword [esp + 0x58]
lea esi, [esp + 0xb0]
lea edi, [esp + 0x10]
push 1
push esi
push edi
call dword [eax + 0x40]
add esp, 0xc
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
add eax, 1
adc ecx, 0
jb 0x55b4f8
cmp ebx, 8
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
jb 0x55b439
xor eax, eax
cmp ebx, 0x20
jb 0x55b3e5
movaps xmm0, xmmword [0x7d4f80]
mov eax, ebx
lea ecx, [esp + 0xc0]
and eax, 0xffffffe0
mov edx, eax
nop word [eax + eax]
movups xmm1, xmmword [ecx - 0x10]
movups xmm2, xmmword [ecx]
xorps xmm1, xmm0
xorps xmm2, xmm0
movups xmmword [ecx - 0x10], xmm1
movups xmmword [ecx], xmm2
add ecx, 0x20
add edx, 0xffffffe0
jne 0x55b3c0
cmp ebx, eax
je 0x55b448
test bl, 0x18
je 0x55b432
movaps xmm0, xmmword [0x7d4f90]
mov ecx, ebx
lea edx, [esp + eax + 0xb0]
and ecx, 0xfffffff8
lea esi, [esp + ecx + 0xb0]
sub eax, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
movsd xmm1, qword [edx]
xorps xmm1, xmm0
movlps qword [edx], xmm1
add edx, 8
add eax, 8
jne 0x55b410
cmp ebx, ecx
jne 0x55b439
jmp 0x55b448
call fcn.007cb1f0
jmp 0x55b360
lea esi, [esp + eax + 0xb0]
lea eax, [esp + ebx + 0xb0]
xor byte [esi], 0x6a
inc esi
cmp esi, eax
jne 0x55b440
mov eax, dword [esp + 0xa8]
mov ecx, dword [eax + 0x50]
test ecx, ecx
je 0x55b4e4
mov eax, ebx
xor edx, edx
div ecx
mov dword [esp + 0x268], ebx
mov esi, eax
imul eax, ecx
cmp eax, ebx
mov dword [esp + 0xc], eax
jne 0x55b502
cmp ecx, ebx
ja 0x55b4c3
movzx eax, byte [0x94bfc4]
lea ebx, [esp + 0x60]
cmp al, 2
jne 0x55b4dd
mov eax, dword [esp + 0xa8]
lea ecx, [esp + 0xb0]
push esi
push ecx
push ebx
call dword [eax + 0x40]
add esp, 0xc
mov eax, dword [esp + 0xa4]
add esi, dword [esp + 0xa0]
adc eax, 0
jb 0x55b4f8
mov dword [esp + 0xa0], esi
mov dword [esp + 0xa4], eax
push 0xa0
push edi
push dword [esp + 0x10]
call fcn.007bd9b0
add esp, 0xc
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.007cb1f0
jmp 0x55b48b
mov ecx, str.attempt_to_divide_by_zero
mov edx, 0x19
push 0x89ca38
call fcn.007c1ca0
mov ecx, 0x89ca58
call fcn.007c1fe0
mov dword [esp + 0x190], 0
lea eax, [esp + 0x190]
lea ecx, [esp + 0xc]
lea edx, [esp + 0x268]
push 0x89ca48
push eax
call fcn.007cb1c0
int3