Function at 0x100d8450
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
push ebx
mov ebx, dword [esp + 0x30]
push ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x14], ebp
test ebp, ebp
je 0x100d8661
mov ecx, dword [sym.imp.WS2_32.dll_ntohl]
mov edx, dword [esp + 0x38]
mov eax, dword [ebx + 0x1ac]
push esi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
push edi
mov ecx, 0x40
sub ecx, eax
add eax, 0x16c
add eax, ebx
mov dword [esp + 0x34], ecx
cmp ecx, ebp
ja 0x100d8648
push ecx
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
lea esi, [ebx + 0x28]
add esp, 0xc
mov ebx, dword [esp + 0x24]
mov edi, esi
mov ebp, 0x10
push dword [edi + 0x144]
call ebx
mov dword [edi], eax
lea edi, [edi + 4]
sub ebp, 1
jne 0x100d84b6
mov ebx, dword [esp + 0x3c]
lea ecx, [ebp + 0x40]
nop
mov eax, dword [esi + 0x34]
lea esi, [esi + 4]
xor eax, dword [esi + 0x1c]
xor eax, dword [esi + 4]
xor eax, dword [esi - 4]
rol eax, 1
mov dword [esi + 0x3c], eax
sub ecx, 1
jne 0x100d84d0
mov ecx, dword [ebx + 0x1c]
mov eax, dword [ebx + 0x14]
mov edx, eax
mov ebp, dword [ebx + 0x18]
mov edi, ebp
mov esi, dword [ebx + 0x20]
mov dword [esp + 0x14], ecx
mov dword [ebx + 8], ecx
mov ecx, dword [ebx + 0x24]
mov dword [esp + 0x18], ecx
mov dword [ebx + 0x10], ecx
xor ecx, ecx
mov dword [esp + 0x28], eax
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x2c], ebp
mov dword [ebx + 4], ebp
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x30], esi
mov dword [ebx + 0xc], esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x44], 0x28
rol edx, 5
cmp ecx, 0x14
jge 0x100d855d
mov ecx, edi
and eax, edi
not ecx
and ecx, esi
or ecx, eax
mov eax, dword [esp + 0x44]
add edx, ecx
mov ecx, dword [esp + 0x10]
add edx, dword [eax + ebx]
lea eax, [ebp + 0x5a827999]
add eax, edx
jmp 0x100d85a3
cmp ecx, 0x28
jge 0x100d856d
xor eax, esi
xor eax, edi
add eax, 0x6ed9eba1
jmp 0x100d8598
cmp ecx, 0x3c
jge 0x100d858f
mov ecx, eax
and eax, esi
or ecx, esi
and ecx, edi
or ecx, eax
mov eax, dword [esp + 0x44]
add ecx, dword [eax + ebx]
lea eax, [ecx - 0x70e44324]
mov ecx, dword [esp + 0x10]
jmp 0x100d859f
xor eax, esi
xor eax, edi
add eax, 0xca62c1d6
mov esi, dword [esp + 0x44]
add eax, dword [esi + ebx]
add eax, edx
add eax, ebp
add dword [esp + 0x44], 4
inc ecx
mov dword [ebx + 0x168], eax
mov eax, dword [ebx + 4]
mov ebp, dword [ebx + 0xc]
mov esi, dword [ebx + 8]
mov edi, dword [ebx]
mov edx, dword [ebx + 0x168]
ror eax, 2
cmp dword [esp + 0x44], 0x168
mov dword [ebx + 0x10], ebp
mov dword [ebx + 0xc], esi
mov dword [ebx + 8], eax
mov dword [ebx + 4], edi
mov dword [ebx], edx
mov dword [esp + 0x10], ecx
jl 0x100d8534
add eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x1c], eax
add ecx, edx
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
add eax, esi
mov dword [ebx + 0x20], eax
mov eax, dword [esp + 0x18]
add eax, ebp
mov dword [ebx + 0x14], ecx
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov dword [ebx + 0x24], eax
add ecx, edi
mov eax, dword [esp + 0x34]
sub ebp, eax
add dword [ebx + 0x1b0], eax
add edx, eax
xor eax, eax
mov dword [ebx + 0x18], ecx
mov dword [esp + 0x1c], ebp
mov dword [ebx + 0x1ac], 0
mov dword [esp + 0x20], edx
test ebp, ebp
jne 0x100d8483
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
push ebp
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
add dword [ebx + 0x1ac], ebp
add esp, 0xc
add dword [ebx + 0x1b0], ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret