Function at 0x420c85
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x188
push ebx
push esi
push edi
push 0x472150
call fcn.00420918
add esp, 4
cmp byte [0x472150], 0
jne 0x421002
push 8
lea ecx, [esp + 0x18]
push ecx
mov byte [0x472151], 0
push dword [0x49e1e8]
call dword [0x49e1ec]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push esi
mov ebx, 0xb54ba0
xor ecx, ecx
push edi
call fcn.0045996a
pop edi
mov edi, ebx
pop esi
xor esi, esi
add esp, 0xc
mov eax, edi
mov edx, 0x4ec4ec4f
mov ecx, edi
mul edx
shr edx, 3
imul eax, edx, 0x1a
sub ecx, eax
mov eax, edx
mov edx, ecx
mov dword [esp + 0x10], ecx
add dl, 0x61
mov edi, eax
mov byte [esi + 0x472192], dl
inc esi
mov edx, dword [esp + 0x10]
cmp esi, 5
jb 0x420ce1
lea esi, [esp + 0x84]
push esi
call fcn.00402200
push 0xa
push esi
call fcn.00418b18
push dword [0x49e1e8]
push dword [0x49e1ec]
lea eax, [esp + 0x114]
push eax
push esi
call fcn.00404ca5
push dword [0x49e1e8]
push dword [0x49e1ec]
lea ebx, [esp + 0xd0]
push ebx
lea ecx, [esp + 0x128]
push ecx
lea edx, [esp + 0x138]
push edx
push esi
call fcn.00404555
mov edi, 0x19
mov dword [esp + 0x1a0], edi
push edi
lea eax, [esp + 0x1b0]
push eax
lea ebx, [esp + 0x1a8]
push ebx
push 1
lea ecx, [esp + 0x150]
push ecx
push esi
call fcn.004024b0
push 0x31
push 0x4708a0
lea edx, [esp + 0x160]
push edx
push esi
call fcn.00402610
lea edi, [esp + 0x1bc]
push edi
call fcn.00405f97
push dword [0x49e1e8]
push dword [0x49e1ec]
lea eax, [esp + 0x168]
push eax
lea ebx, [esp + 0x178]
push ebx
push edi
push esi
call fcn.0041a710
push 0x18
lea ecx, [esp + 0x1c4]
push ecx
push edi
call fcn.00406b40
push esi
call fcn.00402310
mov esi, 0x472468
lea edi, [esp + 0x1b8]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [esp + 0x1fc], 0
add esp, 0x88
xor edi, edi
mov esi, dword [esp + 0x174]
cmp dword [esp + 0x174], 6
jae 0x420e8e
mov edx, dword [esp + 0x174]
lea ecx, [esp + edx*4 + 0x148]
mov dword [esp + 0x170], ecx
mov edx, dword [esp + 0x170]
mov ecx, esi
mov eax, dword [edx]
sub ecx, dword [esp + 0x174]
mov ebx, dword [esp + esi*4 + 0x130]
mul dword [ecx*4 + 0x472480]
xor ecx, ecx
add eax, ebx
adc edx, ecx
mov ebx, edi
xor ecx, ecx
add eax, ebx
adc edx, ecx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + esi*4 + 0x130], edx
inc esi
mov edi, dword [esp + 0x80]
cmp esi, 6
jl 0x420e3d
inc dword [esp + 0x174]
cmp dword [esp + 0x174], 6
jb 0x420e15
push 0x18
lea eax, [esp + 0x17d]
push eax
push 0x472197
call fcn.0045a4e0
mov edi, dword [esp + 0x150]
shl edi, 5
mov ebx, dword [esp + 0x14c]
shr ebx, 0x1c
and ebx, 0xf
mov cl, byte [esp + 0x184]
add ebx, ebx
and ecx, 1
or ebx, ecx
or edi, ebx
mov dword [0x4721af], edi
mov edx, dword [esp + 0x150]
shr edx, 0x1b
push 0x18
lea eax, [esp + 0x158]
push eax
mov byte [0x4721b3], dl
push 0x472152
call fcn.0045a4e0
push 0x28
push 0
push 0x47216a
call fcn.00459cc8
push 0x22
push 0
push 0x49e7cc
call fcn.00459cc8
xor esi, esi
add esp, 0x30
push 0x20
mov ecx, 0x472152
push ecx
lea edx, [esp + 0x24]
push edx
call fcn.0045a4e0
mov ecx, 0x472152
push 0x20
push ecx
lea edx, [esp + 0x70]
push edx
call fcn.0045a4e0
xor ebx, ebx
add esp, 0x18
mov eax, dword [esp + ebx*8 + 0x1c]
mov edx, dword [esp + ebx*8 + 0x20]
xor eax, dword [esp + ebx*8 + 0x5c]
xor edx, dword [esp + ebx*8 + 0x60]
mov dword [esp + ebx*8 + 0x3c], eax
mov dword [esp + ebx*8 + 0x40], edx
inc ebx
cmp ebx, 4
jb 0x420f58
push 0x472152
push 0x40
lea ebx, [esp + 0x24]
push ebx
call fcn.0041fae0
push 0x472172
push 0x40
lea edi, [esp + 0x50]
push edi
call fcn.0041fae0
inc esi
add esp, 0x18
cmp esi, 0x80
jb 0x420f2f
push 0x18
push 0
lea ecx, [esp + 0x150]
push ecx
call fcn.00459cc8
push 0x18
push 0
lea esi, [esp + 0x144]
push esi
call fcn.00459cc8
mov eax, 0x4721c8
push 0x200
push 0x37
push eax
call fcn.00459cc8
mov edx, 0x4721c8
mov ebx, 0x472152
push 0
push 0x200
push edx
push 0
push 0
push ebx
push ebx
call fcn.0041f7f8
push 0x472150
call fcn.00420c50
add esp, 0x44
pop edi
pop esi
pop ebx
add esp, 0x188
ret