Function at 0x466f78
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [0x6dad44]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x24], eax
xor esi, esi
mov dword [ebp - 0x18], edx
xor eax, eax
mov dword [ebp - 0x20], edi
mov edx, 0x80
mov dword [ebp - 0x14], esi
mov ecx, dword [edi + 4]
test ecx, ecx
mov dword [ebp - 0x30], ecx
mov ecx, edi
cmove eax, edx
mov dword [ebp - 0x1c], esi
movzx eax, ax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x2c], esi
call fcn.00487815
test eax, eax
jne 0x466fcf
push 0xfffffffffffffffc
pop eax
jmp 0x46737e
cmp dword [edi + 0xc], esi
jne 0x4670ef
cmp dword [edi + 0x38], esi
je 0x4670ce
mov ebx, dword [ebp + 0xc]
cmp dword [edi + 0x3c], ebx
jge 0x4670ce
cmp dword [edi + 0x48], esi
jne 0x4670b8
push ecx
mov ecx, dword [ebp - 0x24]
lea eax, [ebp - 0x1c]
push eax
push esi
mov edx, ebx
call fcn.0044a909
add esp, 0xc
test eax, eax
jne 0x4670ce
mov ecx, dword [ebp - 0x1c]
cmp ecx, ebx
jae 0x4670a5
cmp ecx, 0xffffffff
jae 0x46703c
or eax, 0xffffffff
sub eax, ecx
je 0x46703c
cmp ecx, 0xffffffef
jae 0x46703c
lea eax, [ecx + 0x10]
push eax
call fcn.0060a4f0
pop ecx
mov ecx, dword [ebp - 0x1c]
jmp 0x46703e
mov eax, esi
push esi
mov edx, ecx
mov ecx, eax
push esi
call fcn.00487604
add esp, 4
mov dword [ebp - 0x2c], eax
lea ecx, [ebp - 0x1c]
mov edx, ebx
push ecx
mov ecx, dword [ebp - 0x24]
push eax
call fcn.0044a909
add esp, 0xc
test eax, eax
jne 0x4670ce
mov eax, ebx
mov dword [edi + 0x4c], esi
cdq
lea ecx, [ebp - 0x10]
add dword [edi + 0x58], eax
mov eax, dword [ebp - 0x2c]
adc dword [edi + 0x5c], edx
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x24], eax
or edx, 0xc000
mov eax, dword [ebp - 0x1c]
push eax
push dword [ebp - 0x18]
mov dword [edi + 0x48], esi
mov dword [ebp + 0xc], eax
call fcn.004a4f22
pop ecx
pop ecx
mov ecx, eax
cdq
add dword [edi + 0x58], eax
mov dword [ebp - 0x14], ecx
adc dword [edi + 0x5c], edx
jmp 0x4670ca
inc dword [edi + 0x4c]
mov eax, dword [edi + 0x4c]
cmp eax, dword [edi + 0x44]
jle 0x4670ce
mov eax, dword [edi + 0x40]
mov dword [edi + 0x4c], esi
jmp 0x4670c5
cmp dword [edi + 0x3c], ebx
jge 0x4670ce
mov eax, dword [edi + 0x48]
test eax, eax
jle 0x4670ce
dec eax
mov ecx, esi
mov dword [edi + 0x48], eax
test ecx, ecx
jne 0x4670f9
mov ebx, dword [ebp + 0xc]
push ebx
push dword [ebp - 0x18]
mov edx, dword [ebp - 0x28]
lea ecx, [ebp - 0x10]
or edx, 0x8000
call fcn.004a4f22
pop ecx
pop ecx
mov ecx, eax
mov dword [ebp - 0x14], ecx
jmp 0x4670fc
mov ebx, dword [ebp + 0xc]
push ebx
mov dword [edi + 0xc], esi
push esi
jmp 0x4670d5
mov ebx, dword [ebp + 0xc]
cmp dword [ebp - 0x30], esi
jne 0x467227
lea edx, [ecx + 4]
xor eax, eax
add edx, ebx
inc eax
mov dword [ebp - 0x1c], edx
cmp edx, 0xffff
jge 0x467149
cmp edx, 0xffffffdb
jae 0x467131
lea eax, [ecx + 0x28]
add eax, ebx
call fcn.005c1cc0
mov edx, dword [ebp - 0x1c]
xor eax, eax
mov ecx, esp
inc eax
jmp 0x467133
mov ecx, esi
push eax
push 4
call fcn.00487604
pop ecx
pop ecx
mov ecx, eax
mov dword [ebp - 0x18], ecx
lea eax, [ecx + 4]
mov dword [ecx], eax
jmp 0x46717f
cmp edx, 0xffffffff
jae 0x46716d
push 0xfffffffffffffffb
pop eax
sub eax, ebx
sub eax, ecx
je 0x46716d
cmp edx, 0xffffffef
jae 0x46716d
lea eax, [ecx + 0x14]
add eax, ebx
push eax
call fcn.0060a4f0
mov edx, dword [ebp - 0x1c]
pop ecx
jmp 0x46716f
mov eax, esi
push esi
push esi
mov ecx, eax
call fcn.00487604
pop ecx
pop ecx
mov ecx, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
push eax
lea edx, [ecx + eax]
mov dword [ebp - 0x28], edx
lea edx, [ebp - 0x10]
push edx
mov edx, eax
call section..text
push 4
push dword [ebp - 0x28]
call fcn.004c7680
mov edx, dword [ebp - 0x28]
add esp, 0x10
mov eax, dword [edx]
mov dword [ebp - 0x34], eax
test ebx, ebx
jle 0x467206
mov eax, ebx
mov ecx, esi
sar eax, 2
mov dword [ebp - 0x30], eax
test eax, eax
jle 0x4671dc
mov edi, dword [ebp - 0x24]
lea ebx, [edx + 4]
mov edx, eax
mov eax, dword [edi + ecx*4]
xor eax, dword [ebp - 0x34]
inc ecx
mov dword [ebx], eax
lea ebx, [ebx + 4]
cmp ecx, edx
jl 0x4671c3
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x28]
shl ecx, 2
cmp ecx, ebx
jge 0x467206
mov edi, dword [ebp - 0x24]
mov eax, ecx
and eax, reloc.WS2_32.dll_closesocket
jns 0x4671f4
dec eax
or eax, 0xfffffffc
inc eax
mov al, byte [eax + edx]
xor al, byte [ecx + edi]
mov byte [edx + ecx + 4], al
inc ecx
cmp ecx, ebx
jl 0x4671e6
mov edi, dword [ebp - 0x20]
mov ecx, dword [edi + 0x78]
call fcn.00487815
test eax, eax
je 0x467331
mov eax, dword [edi + 0x78]
test eax, eax
je 0x46721f
mov esi, dword [eax]
push dword [ebp - 0x1c]
jmp 0x467321
mov ecx, dword [edi]
call fcn.0048fb51
test eax, eax
je 0x4672ac
mov ecx, dword [edi + 0x78]
call fcn.00487815
test ebx, ebx
jle 0x46727b
test eax, eax
je 0x467260
mov eax, dword [edi + 0x78]
test eax, eax
je 0x46724d
mov ecx, dword [eax]
jmp 0x46724f
mov ecx, esi
mov eax, dword [ebp - 0x14]
xor edx, edx
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00477dcd
pop ecx
pop ecx
mov ecx, dword [edi + 0x78]
call fcn.00487815
test eax, eax
je 0x46729d
mov eax, dword [edi + 0x78]
test eax, eax
je 0x467275
mov esi, dword [eax]
push ebx
push dword [ebp - 0x24]
jmp 0x467290
test eax, eax
je 0x46729d
mov eax, dword [edi + 0x78]
test eax, eax
je 0x467288
mov esi, dword [eax]
mov eax, dword [ebp - 0x14]
push eax
lea eax, [ebp - 0x10]
push eax
xor edx, edx
mov ecx, esi
call fcn.00477dcd
pop ecx
pop ecx
jmp 0x4672a0
xor eax, eax
inc eax
xor ebx, ebx
test eax, eax
sete bl
jmp 0x467343
mov ecx, dword [ebp - 0x14]
lea edx, [ebx + ecx]
mov dword [ebp - 0x20], edx
cmp edx, 0xffffffff
jae 0x4672d6
mov eax, ebx
not eax
sub eax, ecx
je 0x4672d6
cmp edx, 0xffffffef
jae 0x4672d6
lea eax, [edx + 0x10]
push eax
call fcn.0060a4f0
mov edx, dword [ebp - 0x20]
pop ecx
jmp 0x4672d8
mov eax, esi
push esi
push esi
mov ecx, eax
call fcn.00487604
mov ecx, eax
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 0x14]
push eax
push edx
mov edx, eax
mov dword [ebp - 0x18], ecx
call section..text
mov ecx, dword [ebp - 0x18]
mov edx, ebx
add ecx, dword [ebp - 0x14]
push ebx
push dword [ebp - 0x24]
call section..text
mov ecx, dword [edi + 0x78]
add esp, 0x18
call fcn.00487815
test eax, eax
je 0x467331
mov eax, dword [edi + 0x78]
test eax, eax
je 0x46731e
mov esi, dword [eax]
push dword [ebp - 0x20]
push dword [ebp - 0x18]
xor edx, edx
mov ecx, esi
call fcn.00477dcd
pop ecx
pop ecx
jmp 0x467334
xor eax, eax
inc eax
mov ecx, dword [ebp - 0x18]
xor ebx, ebx
test eax, eax
sete bl
call fcn.004876b9
mov eax, dword [ebp + 0xc]
cdq
mov ecx, eax
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x14]
cdq
mov dword [ebp - 0x34], ecx
mov esi, eax
add esi, ecx
mov ecx, edx
adc ecx, dword [ebp - 0x20]
add dword [edi + 0x68], esi
adc dword [edi + 0x6c], ecx
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
je 0x467370
call fcn.004876b9
jmp 0x46737c
add eax, dword [ebp - 0x34]
adc edx, dword [ebp - 0x20]
add dword [edi + 0x58], eax
adc dword [edi + 0x5c], edx
mov eax, ebx
lea esp, [ebp - 0x44]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.005c0e20
mov esp, ebp
pop ebp
ret