Function at 0x51bd00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2c
call fcn.00626ba0
push ebx
push esi
mov esi, ecx
mov ecx, dword [ebp + 0xc]
push edi
mov edi, edx
mov dword [ebp - 0x2c], esi
xor edx, edx
mov eax, dword [esi + 0x170]
mov dword [ebp - 0x24], eax
mov eax, dword [esi + 0x174]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0x164]
mov dword [ebp - 0x18], eax
mov eax, ecx
add eax, dword [esi + 0x38]
adc edx, dword [esi + 0x3c]
cmp edx, 0xf
ja 0x51c055
jb 0x51bd53
cmp eax, 0xffffffe0
ja 0x51c055
cmp dword [esi + 0x16c], 0
lea ebx, [esi + 0x40]
mov dword [esi + 0x3c], edx
mov edx, dword [esi + 0x168]
mov dword [esi + 0x38], eax
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], ebx
je 0x51bf9d
test ecx, ecx
jne 0x51bd9c
lea eax, [esi + 0x60]
push eax
mov eax, dword [esi + 0x160]
push ebx
call eax
add esp, 8
mov dword [esi + 0x16c], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movups xmm0, xmmword [ebx]
lea eax, [esi + 0x178]
mov dword [ebp - 8], 0
mov dword [ebp - 0x1c], eax
mov edx, 0x10
movups xmmword [eax], xmm0
mov dword [ebx], 0
lea eax, [esi + 0xc]
mov dword [ebx + 4], 0
mov dword [esi + 0x48], 0
mov dword [esi + 0x4c], 0
mov dword [ebp - 0x14], eax
mov eax, dword [eax]
bswap eax
mov dword [ebp - 0xc], edx
mov dword [esi + 0x16c], 0
mov dword [ebp - 4], eax
mov ebx, dword [ebp + 8]
lea eax, [esi + 0x60]
cmp ecx, 0x10
jb 0x51be13
test edx, edx
je 0x51be13
push edx
push dword [ebp - 0x1c]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
add esp, 0x10
mov dword [ebp - 0xc], 0
cmp ecx, 0xc00
jb 0x51beac
mov eax, 0xaaaaaaab
mul ecx
shr edx, 0xb
mov dword [ebp - 0x28], edx
nop dword [eax]
mov dword [ebp - 0x1c], 0xc0
push dword [ebp - 0x20]
lea eax, [esi + 0x10]
push eax
push esi
call dword [ebp - 0x24]
mov eax, dword [ebp - 4]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
inc eax
mov dword [ebp - 4], eax
bswap eax
mov dword [ecx], eax
mov eax, dword [edi]
xor eax, dword [esi + 0x10]
mov dword [ebx], eax
mov eax, dword [edi + 4]
xor eax, dword [esi + 0x14]
mov dword [ebx + 4], eax
mov eax, dword [edi + 8]
xor eax, dword [esi + 0x18]
mov dword [ebx + 8], eax
mov eax, dword [edi + 0xc]
add edi, 0x10
xor eax, dword [esi + 0x1c]
mov dword [ebx + 0xc], eax
add ebx, 0x10
sub dword [ebp - 0x1c], 1
jne 0x51be37
push 0xc00
lea eax, [ebx - 0xc00]
push eax
lea eax, [esi + 0x60]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
add esp, 0x10
sub ecx, 0xc00
sub dword [ebp - 0x28], 1
mov dword [ebp + 0xc], ecx
jne 0x51be30
mov edx, ecx
and edx, 0xfffffff0
mov dword [ebp - 0x1c], edx
je 0x51bf2b
cmp ecx, 0x10
jb 0x51bf15
shr ecx, 4
lea eax, [esi + 0x10]
mov dword [ebp - 0x28], ecx
push dword [ebp - 0x20]
push eax
push esi
call dword [ebp - 0x24]
mov eax, dword [ebp - 4]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
inc eax
mov dword [ebp - 4], eax
bswap eax
sub dword [ebp + 0xc], 0x10
mov dword [ecx], eax
mov eax, dword [edi]
xor eax, dword [esi + 0x10]
mov dword [ebx], eax
mov eax, dword [edi + 4]
xor eax, dword [esi + 0x14]
mov dword [ebx + 4], eax
mov eax, dword [edi + 8]
xor eax, dword [esi + 0x18]
mov dword [ebx + 8], eax
mov eax, dword [edi + 0xc]
add edi, 0x10
xor eax, dword [esi + 0x1c]
mov dword [ebx + 0xc], eax
add ebx, 0x10
sub dword [ebp - 0x28], 1
lea eax, [esi + 0x10]
jne 0x51bec4
mov edx, dword [ebp - 0x1c]
push edx
mov eax, ebx
sub eax, edx
push eax
lea eax, [esi + 0x60]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
add esp, 0x10
test ecx, ecx
je 0x51bf8b
push dword [ebp - 0x20]
lea eax, [esi + 0x10]
push eax
push esi
call dword [ebp - 0x24]
mov eax, dword [ebp - 4]
sub edi, ebx
mov ecx, dword [ebp - 0x14]
inc eax
bswap eax
add esp, 0xc
mov dword [ecx], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
add eax, 0x178
add eax, esi
mov dword [ebp - 0x28], eax
lea eax, [ecx + 0x10]
add eax, esi
lea edx, [ecx + ebx]
mov ecx, dword [ebp + 0xc]
mov esi, eax
add dword [ebp - 0xc], ecx
mov ebx, dword [ebp - 0x28]
mov dword [ebp - 0x24], eax
mov al, byte [edi + edx]
lea ebx, [ebx + 1]
xor al, byte [esi]
lea esi, [esi + 1]
mov byte [edx], al
lea edx, [edx + 1]
mov byte [ebx - 1], al
sub ecx, 1
jne 0x51bf70
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0xc]
mov dword [esi + 0x168], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esi + 0x178]
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x1c], eax
lea eax, [esi + 0xc]
mov dword [ebp - 0x14], eax
mov eax, dword [eax]
bswap eax
mov dword [ebp - 4], eax
mov eax, edx
and eax, 0xf
mov dword [ebp - 8], eax
je 0x51bdec
mov ebx, dword [ebp + 8]
lea eax, [esi + 0x178]
add eax, edx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 8]
test ecx, ecx
je 0x51c046
mov al, byte [eax + esi + 0x10]
dec ecx
xor al, byte [edi]
inc edx
mov esi, dword [ebp - 0x14]
inc edi
inc dword [ebp - 0x14]
mov byte [ebx], al
inc ebx
mov dword [ebp + 0xc], ecx
mov byte [esi], al
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x2c]
inc eax
and eax, 0xf
mov dword [ebp - 8], eax
jne 0x51bfd5
push edx
lea eax, [esi + 0x178]
push eax
lea eax, [esi + 0x60]
lea ecx, [esi + 0x40]
push eax
push ecx
call dword [ebp - 0x18]
mov eax, dword [ebp - 8]
add esp, 0x10
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x10], eax
lea eax, [esi + 0x178]
mov dword [ebp - 0x1c], eax
lea eax, [esi + 0xc]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], edx
mov dword [ebp + 0xc], ecx
mov dword [ebp - 4], eax
jmp 0x51bdef
mov dword [esi + 0x168], edx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret