Function at 0x411802
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0x10
test eax, eax
je 0x411a96
push ebx
push ebp
push esi
mov esi, dword [esp + 0x20]
mov ebx, dword [esi + 0x44]
push edi
mov edi, dword [esi + 0x40]
mov dword [esp + 0x28], eax
mov eax, edi
mov edx, ebx
mov cl, 3
call fcn.004184d0
push 0
push 0x80
push edx
push eax
call fcn.00418410
mov ecx, ebx
mov dword [esp + 0x10], eax
mov eax, ecx
sar ecx, 0x1f
or ecx, edi
xor edx, edx
or eax, edx
mov edi, ecx
mov ebx, eax
mov ecx, eax
mov ebp, edi
shld ebp, ebx, 8
mov edx, edi
shld edi, eax, 8
shrd ecx, edx, 8
shl ebx, 8
xor ecx, ebx
shl eax, 8
shr edx, 8
xor edx, ebp
mov ebx, 0xff00ff
and ecx, ebx
and edx, ebx
xor ecx, eax
xor edx, edi
mov eax, ecx
mov edi, edx
shrd eax, edi, 0x10
mov ebx, eax
mov eax, ecx
mov ebp, edx
shld ebp, eax, 0x10
shl eax, 0x10
xor ebx, eax
shr edi, 0x10
shld edx, ecx, 0x10
xor edi, ebp
mov eax, 0xffff
and ebx, eax
and edi, eax
mov eax, dword [esi + 0x4c]
xor edi, edx
shl ecx, 0x10
xor ebx, ecx
mov ecx, dword [esi + 0x48]
mov edx, eax
sar eax, 0x1f
or eax, ecx
mov dword [esi + 0x44], edi
xor edi, edi
mov dword [esi + 0x40], ebx
or edx, edi
mov edi, eax
mov eax, edx
mov ebx, edi
shrd eax, ebx, 8
shr ebx, 8
mov ecx, eax
mov eax, ebx
mov ebx, edx
mov ebp, edi
shld ebp, ebx, 8
shl ebx, 8
xor ecx, ebx
shld edi, edx, 8
xor eax, ebp
shl edx, 8
mov ebx, 0xff00ff
and eax, ebx
and ecx, ebx
xor eax, edi
xor ecx, edx
mov edi, eax
mov edx, ecx
shrd edx, edi, 0x10
mov ebx, edx
mov ebp, eax
mov edx, ecx
shld ebp, edx, 0x10
shl edx, 0x10
xor ebx, edx
shr edi, 0x10
shld eax, ecx, 0x10
mov edx, 0xffff
xor edi, ebp
and ebx, edx
shl ecx, 0x10
xor ebx, ecx
and edi, edx
xor edi, eax
mov eax, dword [esp + 0x10]
mov dword [esi + 0x48], ebx
xor ebx, ebx
mov dword [esi + 0x4c], edi
cmp eax, ebx
jbe 0x411987
mov ecx, 0x80
mov byte [eax + esi + 0x50], cl
inc eax
cmp eax, 0x70
jae 0x41195a
push 0x70
pop ecx
sub ecx, eax
push ecx
lea eax, [eax + esi + 0x50]
push ebx
push eax
call sub.msvcrt.dll_memset
jmp 0x411996
cmp eax, ecx
jae 0x41196f
sub ecx, eax
push ecx
lea eax, [eax + esi + 0x50]
push ebx
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea edi, [esi + 0x50]
push edi
push esi
call fcn.0040f262
push 0x7e
push ebx
push edi
call sub.msvcrt.dll_memset
add esp, 0x14
jmp 0x411999
push 0x70
lea edi, [esi + 0x50]
push ebx
push edi
call sub.msvcrt.dll_memset
mov byte [edi], 0x80
add esp, 0xc
mov eax, dword [esi + 0x48]
mov dword [esi + 0xc0], eax
mov eax, dword [esi + 0x4c]
mov dword [esi + 0xc4], eax
mov eax, dword [esi + 0x40]
mov dword [esi + 0xc8], eax
mov eax, dword [esi + 0x44]
mov dword [esi + 0xcc], eax
lea eax, [esi + 0x50]
push eax
push esi
call fcn.0040f262
pop ecx
pop ecx
mov dword [esp + 0x10], ebx
lea ecx, [esi + ebx*8]
mov eax, dword [ecx + 4]
mov edx, dword [ecx]
xor ebx, ebx
mov edi, eax
or edi, ebx
sar eax, 0x1f
or eax, edx
mov edx, edi
mov ebx, eax
mov edi, ebx
mov dword [esp + 0x1c], ebx
mov eax, edx
shrd eax, edi, 8
mov ebp, edx
shld ebx, ebp, 8
shr edi, 8
xor edi, ebx
shl ebp, 8
xor eax, ebp
mov ebx, 0xff00ff
and eax, ebx
and edi, ebx
mov ebx, dword [esp + 0x1c]
shld ebx, edx, 8
shl edx, 8
xor eax, edx
xor edi, ebx
mov dword [esp + 0x14], ebx
mov edx, eax
mov ebx, edi
shrd edx, ebx, 0x10
mov ebp, edx
mov edx, eax
mov dword [esp + 0x1c], edi
shld edi, edx, 0x10
shl edx, 0x10
xor ebp, edx
shr ebx, 0x10
xor ebx, edi
mov edx, 0xffff
and ebx, edx
and ebp, edx
mov edx, dword [esp + 0x1c]
shld edx, eax, 0x10
shl eax, 0x10
xor ebp, eax
mov eax, dword [esp + 0x28]
xor ebx, edx
mov dword [ecx + 4], ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x14], edx
mov dword [ecx], ebp
mov edx, ebp
mov dword [eax], edx
mov ecx, dword [ecx + 4]
add eax, 8
mov dword [eax - 4], ecx
inc ebx
cmp ebx, 8
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], ebx
jl 0x4119cd
push 0xd0
push 0
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret