Function at 0x4001878e
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x104
mov eax, dword [0x40026d24]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
mov eax, edx
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x98], eax
mov dword [ebp - 0xb0], edx
mov dword [ebp - 0x94], ecx
push ebx
push esi
push edi
test eax, eax
je 0x40018cce
test ecx, ecx
je 0x40018cce
test edx, edx
je 0x40018cce
mov ecx, 0x104
call fcn.40016660
mov ebx, eax
mov dword [ebp - 0xa4], ebx
test ebx, ebx
jne 0x400187f8
mov esi, 0x8007000e
jmp 0x40018cd3
lea edx, [ebx + 0x34]
mov dword [ebp - 0x18], 0x123174bb
lea eax, [edx + 0x58]
mov dword [ebp - 0x14], 0x86521ff8
lea ecx, [eax + 0x3c]
mov dword [ebp - 0x10], 0x98d2438b
mov dword [ebp - 0xa0], ecx
mov esi, 0x40026a40
add ecx, 0x14
mov dword [ebp - 0xc], 0x7966ce12
mov dword [ebp - 0x9c], ecx
mov edi, ebx
push 0xd
pop ecx
rep movsd dword es:[edi], dword [esi]
mov dword [ebx], edx
mov edi, edx
mov esi, dword [0x40026a40]
push 0x16
pop ecx
rep movsd dword es:[edi], dword [esi]
mov dword [edx + 0x30], eax
mov edi, dword [ebx]
mov esi, dword [0x40026a40]
push 0xf
pop ecx
mov edi, dword [edi + 0x30]
mov esi, dword [esi + 0x30]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx]
lea edi, [ebp - 0x54]
mov ecx, dword [ebp - 0x9c]
add ecx, 0x14
mov dword [ebp - 8], 0xc5d92014
push 5
mov eax, dword [eax + 0x30]
mov dword [eax + 0x20], ecx
mov eax, dword [ebx]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0xa8], eax
mov eax, dword [0x40026a40]
mov esi, dword [eax + 0x30]
pop eax
mov ecx, eax
push eax
mov esi, dword [esi + 0x20]
rep movsd dword es:[edi], dword [esi]
xor ecx, ecx
pop esi
xor edx, edx
mov eax, ecx
div esi
mov eax, dword [ebp + edx*4 - 0x18]
xor dword [ebp + ecx*4 - 0x54], eax
inc ecx
cmp ecx, esi
jb 0x4001889c
mov edi, dword [ebp - 0xa8]
mov ecx, esi
mov eax, dword [ebp - 0xa0]
lea esi, [ebp - 0x54]
rep movsd dword es:[edi], dword [esi]
mov dword [ebx + 4], eax
lea edi, [ebp - 0x68]
mov esi, dword [0x40026a44]
push 5
pop ebx
mov ecx, ebx
mov dword [ebp - 0x2c], 0x123174bb
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x28], 0x86521ff8
xor ecx, ecx
mov dword [ebp - 0x24], 0x98d2438b
mov dword [ebp - 0x20], 0x7966ce12
mov dword [ebp - 0x1c], 0xc5d92014
xor edx, edx
mov eax, ecx
div ebx
mov eax, dword [ebp + edx*4 - 0x2c]
xor dword [ebp + ecx*4 - 0x68], eax
inc ecx
cmp ecx, ebx
jb 0x400188fa
mov edi, dword [ebp - 0xa0]
lea esi, [ebp - 0x68]
mov eax, dword [ebp - 0x9c]
mov ecx, ebx
mov ebx, dword [ebp - 0xa4]
rep movsd dword es:[edi], dword [esi]
push 5
mov dword [ebx + 8], eax
lea edi, [ebp - 0x7c]
mov esi, dword [0x40026a48]
pop ecx
rep movsd dword es:[edi], dword [esi]
push 5
mov dword [ebp - 0x40], 0x123174bb
xor ecx, ecx
mov dword [ebp - 0x3c], 0x86521ff8
mov dword [ebp - 0x38], 0x98d2438b
mov dword [ebp - 0x34], 0x7966ce12
mov dword [ebp - 0x30], 0xc5d92014
pop esi
xor edx, edx
mov eax, ecx
div esi
mov eax, dword [ebp + edx*4 - 0x40]
xor dword [ebp + ecx*4 - 0x7c], eax
inc ecx
cmp ecx, esi
jb 0x4001895f
mov edi, dword [ebp - 0x9c]
mov ecx, esi
lea esi, [ebp - 0x7c]
rep movsd dword es:[edi], dword [esi]
and dword [ebp - 0xb4], 0
mov ecx, 0xb4
call fcn.40016660
mov edi, eax
mov dword [ebp - 0x9c], edi
push 0x14
pop edx
test edi, edi
jne 0x400189a9
mov esi, 0x8007000e
jmp 0x40018bc0
mov esi, dword [ebp - 0x98]
lea eax, [edi + 0x14]
mov dword [ebp - 0xac], eax
add eax, 0x28
mov dword [ebp - 0xa0], eax
add eax, 0x28
mov dword [ebp - 0xa4], eax
add eax, 0x28
mov dword [ebp - 0xa8], eax
lea eax, [ebp - 0x90]
push 5
cmp eax, esi
pop eax
je 0x400189f0
mov ecx, eax
lea edi, [ebp - 0x90]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x9c]
mov ecx, eax
lea esi, [ebp - 0x90]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [ebp - 0x90]
mov byte [eax], 0
inc eax
sub ecx, 1
jne 0x40018a02
mov esi, dword [ebp - 0x94]
lea eax, [ebp - 0x104]
cmp eax, esi
je 0x40018a21
mov ecx, edx
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx]
mov ecx, edx
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x94], eax
call fcn.40016660
mov dword [ebp - 0x98], eax
push 5
test eax, eax
je 0x40018a7e
pop ecx
mov edi, eax
lea esi, [ebp - 0x104]
rep movsd dword es:[edi], dword [esi]
push ecx
push dword [ebp - 0x94]
mov ecx, eax
push dword [ebp - 0xac]
push 5
pop edi
mov edx, edi
call fcn.4001ad8c
mov ecx, dword [ebp - 0x98]
mov eax, ecx
push 0x14
pop edx
mov byte [eax], 0
inc eax
sub edx, 1
jne 0x40018a6e
call fcn.40016679
jmp 0x40018a7f
pop edi
mov eax, dword [ebx]
push 0x14
pop ecx
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x94], eax
call fcn.40016660
mov dword [ebp - 0x98], eax
test eax, eax
je 0x40018ae0
mov ecx, edi
lea esi, [ebp - 0xf0]
mov edi, eax
mov eax, dword [ebp - 0xac]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x98]
add eax, 0x14
push ecx
push dword [ebp - 0x94]
mov ecx, esi
push eax
push 5
pop edi
mov edx, edi
call fcn.4001ad8c
push 0x14
pop ecx
mov eax, esi
mov byte [eax], 0
inc eax
sub ecx, 1
jne 0x40018ad0
mov ecx, esi
call fcn.40016679
mov eax, dword [ebx]
push 0x14
pop ecx
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x94], eax
call fcn.40016660
mov dword [ebp - 0x98], eax
test eax, eax
je 0x40018b3b
mov ecx, edi
lea esi, [ebp - 0xdc]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
push ecx
push dword [ebp - 0x94]
mov ecx, eax
push dword [ebp - 0xa0]
push 5
pop edi
mov edx, edi
call fcn.4001ad8c
mov ecx, dword [ebp - 0x98]
mov eax, ecx
push 0x14
pop edx
mov byte [eax], 0
inc eax
sub edx, 1
jne 0x40018b2d
call fcn.40016679
mov eax, dword [ebx]
push 0x14
pop ecx
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x94], eax
call fcn.40016660
mov dword [ebp - 0x98], eax
test eax, eax
je 0x40018b9c
mov ecx, edi
lea esi, [ebp - 0xc8]
mov edi, eax
mov eax, dword [ebp - 0xa0]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x98]
add eax, 0x14
push ecx
push dword [ebp - 0x94]
mov ecx, esi
push eax
push 5
pop edi
mov edx, edi
call fcn.4001ad8c
push 0x14
pop ecx
mov eax, esi
mov byte [eax], 0
inc eax
sub ecx, 1
jne 0x40018b8c
mov ecx, esi
call fcn.40016679
mov esi, dword [ebp - 0xac]
sub esp, 0xc
mov edx, ebx
mov ecx, esi
call fcn.4001b938
test eax, eax
jne 0x40018c16
mov edi, dword [ebp - 0x9c]
mov esi, 0x800480d5
push 0x14
pop edx
mov eax, dword [ebx]
mov ecx, edx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x20]
mov byte [eax], 0
inc eax
sub ecx, 1
jne 0x40018bca
mov eax, dword [ebx + 4]
mov ecx, edx
mov byte [eax], 0
inc eax
sub ecx, 1
jne 0x40018bd8
mov eax, dword [ebx + 8]
mov byte [eax], 0
inc eax
sub edx, 1
jne 0x40018be4
mov ecx, ebx
call fcn.40016679
test edi, edi
je 0x40018cd3
mov ecx, edi
mov eax, 0xb4
mov byte [edi], 0
inc edi
sub eax, 1
jne 0x40018c03
call fcn.40016679
jmp 0x40018cd3
push 0
push ebx
push dword [ebp - 0xa4]
mov ecx, esi
push edi
mov edi, dword [ebp - 0x9c]
push edi
push 0
push 4
pop edx
call fcn.4001d23b
test eax, eax
je 0x40018bb8
mov edx, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xa0]
push 0
push 0
push ebx
push 0xffffffffffffffff
push dword [ebp - 0xa8]
call fcn.4001b1fc
test eax, eax
je 0x40018bb8
push 0x28
pop ecx
call fcn.40016660
mov dword [ebp - 0x94], eax
test eax, eax
je 0x40018bb8
lea esi, [eax + 0x14]
mov eax, dword [ebx]
push ecx
mov ecx, dword [ebp - 0xa8]
mov edx, esi
push dword [eax + 0x30]
call fcn.4001aaca
push 5
pop eax
mov ecx, eax
mov eax, dword [ebp - 0x94]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0xb0]
cmp edi, eax
je 0x40018ca8
mov esi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x28
mov ecx, eax
pop edx
mov byte [ecx], 0
inc ecx
sub edx, 1
jne 0x40018cad
mov ecx, eax
call fcn.40016679
mov esi, dword [ebp - 0xb4]
mov edi, dword [ebp - 0x9c]
jmp 0x40018bbd
mov esi, 0x80070057
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.40021790
leave
ret