Function at 0x4027c0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x10
mov edx, 0xdc38eb76
push ebx
mov ebx, dword [esp + 0x18]
push ebp
push esi
push edi
mov eax, ebx
mov esi, 0xb
mov ecx, dword [eax]
add eax, 4
mov edi, ecx
xor edi, edx
dec esi
mov dword [eax - 4], edi
mov edx, ecx
jne 0x4027d7
mov edi, dword [ebx + 0x28]
lea esi, [ebx + 0x2c]
push edi
push esi
push ebx
mov dword [esp + 0x30], edi
call fcn.0040fb60
lea eax, [edi + 1]
push eax
call fcn.004466d7
mov ebp, eax
add esp, 0x10
test ebp, ebp
jne 0x402824
mov ecx, dword [0x45a610]
pop edi
pop esi
pop ebp
mov dword [ecx + 0x140], 1
pop ebx
add esp, 0x10
ret
mov ecx, edi
mov edi, ebp
mov edx, ecx
push ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x28]
mov byte [esi + ebp], 0
call fcn.004030b0
push ebp
call fcn.004465ee
mov eax, dword [esi + ebx + 0x2c]
add esi, 0x2c
add esp, 8
add esi, 4
test eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], 0
jle 0x40291e
mov edi, dword [esp + 0x28]
lea eax, [esi + 0x44]
cmp eax, edi
ja 0x402922
lea eax, [esi + ebx]
push 0x44
push eax
push ebx
mov dword [esp + 0x1c], eax
call fcn.0040fb60
mov ebp, dword [esi + ebx + 0x40]
add esi, 0x40
add esi, 4
add esp, 0xc
lea eax, [esi + ebp]
cmp eax, edi
mov dword [esp + 0x18], eax
ja 0x40293e
lea ecx, [ebp + 1]
push ecx
call fcn.004466d7
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
je 0x402a39
mov ecx, ebp
add esi, ebx
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x20]
push ebx
call fcn.0040fb60
mov eax, dword [esp + 0x28]
add esp, 0xc
push ebp
mov byte [eax + ebp], 0
mov ecx, dword [0x45a844]
push eax
mov eax, dword [esp + 0x18]
add ecx, 0x48c
push eax
call fcn.00417bf0
test eax, eax
je 0x402a60
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x40286b
mov edi, dword [esp + 0x28]
mov eax, dword [esi + ebx]
add esi, 4
test eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], 0
jle 0x402a0b
jmp 0x402958
push 0
push str.Initialize_Error
push 0x455250
call fcn.0043a030
add esp, 0xc
jmp 0x402922
mov edi, dword [esp + 0x28]
lea eax, [esi + 0x44]
cmp eax, edi
ja 0x402a0b
lea eax, [esi + ebx]
push 0x44
push eax
push ebx
mov dword [esp + 0x1c], eax
call fcn.0040fb60
mov ebp, dword [esi + ebx + 0x40]
add esi, 0x40
add esi, 4
add esp, 0xc
lea eax, [esi + ebp]
cmp eax, edi
mov dword [esp + 0x1c], eax
ja 0x402a18
lea ecx, [ebp + 1]
push ecx
call fcn.004466d7
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
je 0x402a39
mov ecx, ebp
add esi, ebx
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x24]
push ebx
call fcn.0040fb60
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov byte [edi + ebp], 0
mov ecx, dword [0x45a844]
push edi
push eax
add ecx, 0x494
call fcn.00416ed0
test eax, eax
je 0x402a53
push edi
call fcn.004465ee
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
add esp, 4
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x402954
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x10
ret
push 0
push str.Initialize_Error
push 0x455250
call fcn.0043a030
add esp, 0xc
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov edx, dword [0x45a610]
pop edi
pop esi
pop ebp
mov dword [edx + 0x140], 1
xor eax, eax
pop ebx
add esp, 0x10
ret
test edi, edi
je 0x402a60
push edi
call fcn.004465ee
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret