Function at 0x402927
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
xor edi, edi
cmp ebx, edi
jne 0x402940
push 0xffffffffffffff9a
jmp 0x402af8
cmp dword [ebx + 0x38], edi
je 0x402939
cmp dword [ebx + 0x9c], edi
je 0x402954
push ebx
call fcn.00402fc7
pop ecx
lea eax, [ebp - 4]
push eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0xc]
push eax
push ebx
call fcn.00402bf5
add esp, 0x10
test eax, eax
je 0x402974
push 0xffffffffffffff99
jmp 0x402af8
push 0x90
call fcn.0040107b
mov esi, eax
pop ecx
cmp esi, edi
mov dword [ebp - 8], esi
je 0x402af6
push 0x4000
call fcn.0040107b
pop ecx
mov dword [esi], eax
mov ecx, dword [ebp + 8]
cmp eax, edi
mov dword [esi + 0x44], ecx
mov ecx, dword [ebp - 4]
mov dword [esi + 0x48], ecx
mov ecx, dword [ebp + 0x14]
mov dword [esi + 0x4c], edi
mov dword [esi + 0x8c], ecx
jne 0x4029c1
push esi
call fcn.0040108f
pop ecx
jmp 0x402af6
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x40], edi
cmp eax, edi
je 0x4029d0
mov ecx, dword [ebx + 0x54]
mov dword [eax], ecx
mov ecx, dword [ebp + 0x10]
cmp ecx, edi
je 0x402a02
push 6
pop edx
mov dword [ecx], edx
mov eax, dword [ebx + 0x50]
push 2
and eax, edx
pop edx
sub eax, edx
je 0x4029fc
sub eax, edx
je 0x4029f8
sub eax, edx
jne 0x402a02
mov dword [ecx], 1
jmp 0x402a02
mov dword [ecx], edx
jmp 0x402a02
mov dword [ecx], 9
mov eax, dword [ebx + 0x5c]
mov dword [esi + 0x50], edi
mov dword [esi + 0x54], eax
mov eax, dword [ebx + 0x54]
mov dword [esi + 0x84], eax
mov eax, dword [ebx + 0x20]
push 8
mov dword [esi + 0x80], eax
lea edi, [esi + 0x60]
pop ecx
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 8]
mov eax, dword [ebx + 0x2c]
xor edi, edi
mov dword [esi + 0x88], eax
mov dword [esi + 0x18], edi
cmp dword [ebx + 0x54], 8
jne 0x402a75
cmp dword [ebp + 0x14], edi
jne 0x402a75
push 0x38
lea eax, [esi + 4]
push str.1.2.1
push 0xfffffffffffffff1
push eax
mov dword [esi + 0x24], edi
mov dword [esi + 0x28], edi
mov dword [esi + 0x2c], edi
mov dword [eax], edi
mov dword [esi + 8], edi
call fcn.00404352
add esp, 0x10
cmp eax, edi
jne 0x402b48
mov dword [esi + 0x40], 1
mov eax, dword [ebx + 0x60]
cmp dword [ebp + 0x18], edi
mov dword [esi + 0x58], eax
mov eax, dword [ebx + 0x64]
mov dword [esi + 0x5c], eax
mov eax, dword [ebx + 0x98]
mov ecx, dword [ebp - 0xc]
mov dword [esi + 8], edi
lea eax, [eax + ecx + 0x1e]
mov dword [esi + 0x3c], eax
mov dword [ebx + 0x9c], esi
je 0x402b46
call fcn.0040314c
lea ecx, [ebx + 0xa4]
push eax
push ecx
mov dword [ebx + 0xb0], eax
push dword [ebp + 0x18]
call fcn.00402bba
mov eax, dword [ebx + 0x9c]
push edi
mov ecx, dword [eax + 0x88]
add ecx, dword [eax + 0x3c]
push ecx
push dword [ebx + 0x20]
push dword [ebx + 0x1c]
call dword [ebx + 0x10]
add esp, 0x1c
test eax, eax
jne 0x402af6
lea eax, [ebp - 0x18]
push 0xc
push eax
push dword [ebx + 0x20]
push dword [ebx + 0x1c]
call dword [ebx + 4]
add esp, 0x10
cmp eax, 0xc
jae 0x402afb
push 0xffffffffffffff98
pop eax
jmp 0x402b48
push dword [ebx + 0xb0]
lea eax, [ebx + 0xa4]
lea esi, [ebp + edi - 0x18]
push eax
call fcn.00402b4d
xor byte [esi], al
movsx eax, byte [esi]
push eax
lea eax, [ebx + 0xa4]
push dword [ebx + 0xb0]
push eax
call fcn.00402b68
add esp, 0x14
inc edi
cmp edi, 0xc
jl 0x402afb
mov eax, dword [ebx + 0x9c]
add dword [eax + 0x3c], 0xc
mov dword [ebx + 0xa0], 1
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret