Function at 0xc589f2
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x274
push ebx
push esi
push edi
push 0xd
pop eax
mov dword [ebp - 0xb8], ecx
lea edi, [ebp - 0x274]
push 0xb
pop ecx
mov esi, 0xc6f8cc
mov byte [ebp - 0x70], al
rep movsd dword es:[edi], dword [esi]
xor ecx, ecx
mov dword [ebp - 0xb4], edx
mov dword [ebp - 0x90], 0xa35bd3fe
mov eax, ecx
mov dword [ebp - 0x8c], 0x8a405f38
movsw word es:[edi], word [esi]
mov dword [ebp - 0x88], 0x1b8991c1
mov dword [ebp - 0x84], 0x47b14e4d
mov dword [ebp - 0x80], 0x6816953e
mov dword [ebp - 0x7c], 0xf65894fb
mov dword [ebp - 0x78], 0x37ccc038
mov dword [ebp - 0x74], 0x7d1c1ad6
mov dword [ebp - 0x6f], 0xd422cfbd
mov dword [ebp - 0x6b], 0x946214a3
mov word [ebp - 0x67], 0x3d2f
mov byte [ebp - 0x65], 0x36
movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0xc58a83
mov edi, dword [0xc786f8]
mov esi, ecx
or edi, 0x3657acbf
mov dword [ebp - 0x10], edi
mov edi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
push 0x2e
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x274]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + edi - 0x1b8], bl
cmp esi, 0x100
jb 0xc58aa5
xor dword [ebp - 0x10], 0x5837d99a
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1b8]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
mov byte [ebp + ebx - 0x1b8], cl
movzx eax, byte [ebp + edi - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x90]
mov byte [ebp + esi - 0x274], al
inc esi
cmp esi, 0x2c
jb 0xc58af4
mov esi, str.xwinhttp.dll
mov dword [ebp - 0x30], 0xf6e5138a
lea edi, [ebp - 0xb0]
mov dword [ebp - 0x2b], 0x26beb42d
xor eax, eax
mov dword [ebp - 0x27], 0x8d4ba286
push 0x28
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x248], al
pop eax
mov byte [ebp - 0x2c], al
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x23], 0x9e6b6150
mov dword [ebp - 0x1f], 0xe22abf43
mov word [ebp - 0x1b], 0x4fc
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x19], 0xac
movsb byte es:[edi], byte [esi]
mov edi, 0xc73e00
push edi
call fcn.00c56a34
mov ebx, dword [0xc78768]
mov esi, 0xc73c20
pop ecx
push ecx
mov edx, edi
mov ecx, 0xc73c20
call fcn.00c56392
pop ecx
lea esi, [esi + 2]
xor ecx, ecx
or ebx, 0x1e748e63
cmp word [esi], cx
jne 0xc58ba8
mov dword [ebp - 4], ebx
mov edi, ecx
mov eax, ecx
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0xc58bcd
lea eax, [ebx - 0x10d5dd29]
mov dword [ebp - 0x14], 0xc
mov esi, ecx
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0x10]
mov ebx, eax
mov al, byte [ebp + esi - 0x1b8]
xor edx, edx
mov byte [ebp - 5], al
mov eax, esi
div dword [ebp - 0x14]
movzx eax, byte [ebp + edx - 0xb0]
movzx edx, byte [ebp - 5]
add eax, edi
add edx, eax
mov edi, 0xc73e00
movzx eax, dl
mov dword [ebp - 0xc], eax
call fcn.00c56618
inc edi
mov ecx, ebx
cmp byte [edi], 0
jne 0xc58c1f
mov edi, dword [ebp - 0xc]
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov al, byte [ebp - 5]
mov byte [ebp + edi - 0x1b8], al
cmp esi, 0x100
jb 0xc58bf3
xor eax, eax
and dword [ebp - 4], 0xbc961958
mov edi, eax
mov esi, eax
mov ebx, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1b8]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
mov byte [ebp + ebx - 0x1b8], cl
movzx eax, byte [ebp + edi - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x30]
mov byte [ebp + esi - 0x1f0], al
inc esi
cmp esi, 0x18
jb 0xc58c5f
mov esi, str.IndexEfsSuccess
mov dword [ebp - 0x30], 0xc38ce791
lea edi, [ebp - 0xb0]
mov dword [ebp - 0x2c], 0xe8ca375d
push 0x28
pop eax
movsd dword es:[edi], dword [esi]
xor ecx, ecx
and dword [ebp - 4], 0xe43d6725
mov byte [ebp - 0x27], al
push 0xa
movsd dword es:[edi], dword [esi]
pop eax
mov byte [ebp - 0x25], al
mov eax, ecx
mov byte [ebp - 0x1d8], cl
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x28], 0xf3
mov byte [ebp - 0x26], 0xca
mov dword [ebp - 0x24], 0xc914458e
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x20], 0xc963dba9
mov edi, ecx
mov dword [ebp - 0x1c], 0xda22867d
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0xc58d08
push 0xf
mov esi, ecx
pop ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
mov eax, esi
div ecx
movzx ecx, bl
push 0xf
movzx eax, byte [ebp + edx - 0xb0]
add eax, edi
add ecx, eax
movzx edi, cl
pop ecx
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + edi - 0x1b8], bl
cmp esi, 0x100
jb 0xc58d1c
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1b8]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
mov byte [ebp + ebx - 0x1b8], cl
movzx eax, byte [ebp + edi - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x30]
mov byte [ebp + esi - 0x20c], al
inc esi
cmp esi, 0x18
jb 0xc58d64
push 0xc
pop eax
push 0xf
pop ecx
mov esi, 0xc6ff90
mov byte [ebp - 0x22], al
lea edi, [ebp - 0xa0]
mov dword [ebp - 0x30], 0xc8435faf
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 4]
xor edx, edx
mov byte [ebp - 0x1f4], dl
mov eax, edx
mov dword [ebp - 0x2c], 0x8240dd40
movsb byte es:[edi], byte [esi]
mov esi, ecx
mov dword [ebp - 0x28], 0x3ea4244f
xor esi, 0x7157977e
mov word [ebp - 0x24], 0xf90f
mov dword [ebp - 0x21], 0x943110fc
mov dword [ebp - 0x1d], 0xa81ba091
mov byte [ebp - 0x19], 0x8b
mov dword [ebp - 4], esi
or ecx, 0xea97e91c
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0xc58e10
mov edi, edx
mov esi, edx
xor edx, edx
mov bl, byte [ebp + edi - 0x1b8]
push 0x3c
mov eax, edi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xa0]
add eax, esi
add ecx, eax
movzx esi, cl
mov al, byte [ebp + esi - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
inc edi
mov byte [ebp + esi - 0x1b8], bl
cmp edi, 0x100
jb 0xc58e29
xor eax, eax
xor dword [ebp - 4], 0x69b17c36
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1b8]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
mov byte [ebp + ebx - 0x1b8], cl
movzx eax, byte [ebp + edi - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x30]
mov byte [ebp + esi - 0x228], al
inc esi
cmp esi, 0x18
jb 0xc58e78
push 0xc
pop eax
push 5
pop ecx
mov esi, str.SrchIndexerProperties
mov byte [ebp - 0x3a], al
imul eax, dword [ebp - 4], 0xfea69e4d
lea edi, [ebp - 0x30]
rep movsd dword es:[edi], dword [esi]
xor ebx, ebx
mov dword [ebp - 0x4c], 0x32ae750f
push 0xc73e00
mov byte [ebp - 0x210], bl
mov dword [ebp - 0x48], 0xfab9658a
mov dword [ebp - 0x44], 0xd3d04bc3
mov dword [ebp - 0x40], 0x1df13022
mov word [ebp - 0x3c], 0x3fc
mov dword [ebp - 0x39], 0xce9bcc3b
mov byte [ebp - 0x35], 0xd9
movsw word es:[edi], word [esi]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], ebx
call fcn.00c56a34
mov esi, 0xc718b0
lea edi, [ebp - 0xb0]
pop ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
cmp byte [ebp - 0xb0], 0x77
jne 0xc58f74
mov al, 0x77
mov esi, ebx
test al, al
je 0xc58f74
cmp byte [ebp + esi - 0xb0], bl
je 0xc58f74
push ecx
mov edx, 0xc73e00
mov ecx, 0xc73c20
call fcn.00c56392
mov al, byte [esi + 0xc73e01]
inc esi
pop ecx
cmp al, byte [ebp + esi - 0xb0]
je 0xc58f46
mov eax, ebx
mov edi, 0x100
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, edi
jb 0xc58f7b
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
push 0x15
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x30]
add eax, dword [ebp - 0xc]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0xc], ecx
mov al, byte [ebp + ecx - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + ecx - 0x1b8], bl
cmp esi, edi
jb 0xc58f89
mov esi, str.text_file_busy
lea edi, [ebp - 0xb0]
xor eax, eax
mov ecx, eax
mov ebx, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, eax
lea eax, [edi + 1]
movzx edi, al
push 0xc73e00
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp - 5], al
movzx eax, al
mov dword [ebp - 0xc], eax
add eax, ecx
movzx eax, al
mov dword [ebp - 0x14], eax
call fcn.00c56a34
xor eax, eax
cmp byte [ebp - 0xb0], 0x77
pop ecx
mov esi, eax
jne 0xc59040
mov al, 0x77
test al, al
je 0xc59040
cmp byte [ebp + esi - 0xb0], 0
je 0xc59040
push 0xc73e00
call fcn.00c56a34
mov al, byte [esi + 0xc73e01]
inc esi
pop ecx
cmp al, byte [ebp + esi - 0xb0]
je 0xc59017
movzx eax, byte [ebp + esi - 0xb0]
movzx ecx, byte [esi + 0xc73e00]
sub ecx, eax
cmp ecx, 0x18b2
jne 0xc59065
imul edx, dword [ebp - 0x10], 0xae1e8a33
mov dword [ebp - 0x10], edx
jmp 0xc5906f
and dword [ebp - 4], 0x1efcf6ce
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov al, byte [ebp + ecx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
mov al, byte [ebp - 5]
mov byte [ebp + ecx - 0x1b8], al
movzx eax, byte [ebp + edi - 0x1b8]
add eax, dword [ebp - 0xc]
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + ebx - 0x4c]
mov byte [ebp + ebx - 0x30], al
inc ebx
cmp ebx, 0x18
jb 0xc58fdf
mov esi, 0xc7392c
mov dword [ebp - 0x4c], 0x7e1f49fe
lea edi, [ebp - 0xac]
mov dword [ebp - 0x48], 0xf5c6eb5f
push edx
xor ebx, ebx
mov dword [ebp - 0x44], 0xdef5275f
movsd dword es:[edi], dword [esi]
push edx
mov edx, 0xc73c20
mov byte [ebp - 0x18], bl
mov dword [ebp - 0x40], 0x79e673a8
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x3c], 0x75ce5abc
mov dword [ebp - 0x38], 0xabf084a7
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
call fcn.00c56941
mov esi, dword [ebp - 4]
mov edi, ebx
pop ecx
pop ecx
push 0xc73e00
call fcn.00c56a34
xor esi, 0x6417a283
inc edi
pop ecx
cmp word [edi*2 + 0xc73c20], bx
jne 0xc59103
cmp edi, 0x698
ja 0xc5912d
xor esi, 0xc8bb52db
call fcn.00c56a87
mov dword [ebp - 0xc], ebx
mov eax, ebx
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0xc59137
mov edi, ebx
xor edx, edx
mov bl, byte [ebp + edi - 0x1b8]
push 0xa
mov eax, edi
xor esi, 0xbf983b06
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xac]
add eax, dword [ebp - 0xc]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0xc], ecx
mov al, byte [ebp + ecx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
inc edi
mov byte [ebp + ecx - 0x1b8], bl
cmp edi, 0x100
jb 0xc59148
xor eax, eax
mov dword [ebp - 4], esi
mov esi, eax
mov ebx, eax
mov edi, eax
lea eax, [ebx + 1]
movzx ebx, al
mov cl, byte [ebp + ebx - 0x1b8]
movzx edx, cl
lea eax, [edx + esi]
movzx esi, al
mov al, byte [ebp + esi - 0x1b8]
mov byte [ebp + ebx - 0x1b8], al
mov byte [ebp + esi - 0x1b8], cl
movzx eax, byte [ebp + ebx - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + edi - 0x4c]
mov byte [ebp + edi - 0x244], al
inc edi
cmp edi, 0x18
jb 0xc5919d
mov esi, dword [ebp - 4]
lea edi, [ebp - 0x8c]
xor eax, eax
mov dword [ebp - 0x4c], 0xd138097c
add esi, 0x2d06fc83
mov byte [ebp - 0x22c], al
push 0xa
mov dword [ebp - 0xc], esi
mov esi, 0xc73958
pop eax
mov ecx, eax
mov dword [ebp - 0x48], 0x83977efb
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x44], 0x45102a63
mov dword [ebp - 0x40], 0x6fd0b088
mov dword [ebp - 0x3c], 0x846249
mov dword [ebp - 0x38], 0x98df80ef
movsb byte es:[edi], byte [esi]
call fcn.00c56a87
push 6
pop ecx
mov esi, str.SrchDSSQuery
lea edi, [ebp - 0x1d4]
rep movsd dword es:[edi], dword [esi]
push 0x68
xor edx, edx
pop ecx
movsw word es:[edi], word [esi]
mov ebx, edx
cmp cx, word [ebp - 0x1d4]
jne 0xc59293
mov eax, edx
test cx, cx
je 0xc59293
cmp word [ebp + eax - 0x1d4], dx
je 0xc59293
call fcn.00c56a87
inc ebx
push 0
pop edx
lea eax, [ebx + ebx]
movzx ecx, word [eax + 0xc73c20]
cmp cx, word [ebp + eax - 0x1d4]
je 0xc59267
movzx eax, byte [ebp + ebx*2 - 0x1d4]
movzx ecx, byte [ebx*2 + 0xc73c20]
mov ebx, dword [ebp - 0xc]
sub ecx, eax
cmp ecx, 0x2370
jne 0xc592c2
imul esi, ebx, 0xb4afeb2d
mov ecx, esi
mov dword [ebp - 4], esi
call fcn.00c56618
jmp 0xc592ce
mov esi, dword [ebp - 4]
sub esi, 0x7d6d138
mov dword [ebp - 4], esi
xor eax, eax
and ebx, 0xf9315774
inc eax
cmp byte [eax + 0xc73e00], 0
jne 0xc592d0
mov dword [0xc786f8], ebx
cmp eax, 0x779
jbe 0xc59308
or esi, 0x3a30ef77
mov edx, 0xc73e00
push ecx
mov ecx, 0xc73c20
mov dword [ebp - 4], esi
call fcn.00c56392
jmp 0xc59321
mov eax, esi
mov edx, 0xc73c20
xor eax, 0x265d81f
push esi
push esi
mov dword [0xc786f8], eax
call fcn.00c56941
pop ecx
pop ecx
xor ecx, ecx
mov eax, ecx
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0xc59326
mov edi, ecx
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + edi - 0x1b8]
push 0x28
mov eax, edi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x8c]
add eax, esi
add ecx, eax
movzx esi, cl
mov al, byte [ebp + esi - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
inc edi
mov byte [ebp + esi - 0x1b8], bl
cmp edi, 0x100
jb 0xc59339
mov esi, dword [ebp - 4]
xor eax, eax
mov dword [ebp - 0x10], eax
mov ebx, eax
mov edi, eax
lea eax, [ebx + 1]
sub esi, 0x2675ac53
movzx ebx, al
mov eax, dword [ebp - 0x10]
mov cl, byte [ebp + ebx - 0x1b8]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x10], eax
mov al, byte [ebp + eax - 0x1b8]
mov byte [ebp + ebx - 0x1b8], al
mov eax, dword [ebp - 0x10]
mov byte [ebp + eax - 0x1b8], cl
movzx eax, byte [ebp + ebx - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + edi - 0x4c]
mov byte [ebp + edi - 0x1d4], al
inc edi
cmp edi, 0x18
jb 0xc59385
xor eax, eax
mov dword [0xc78768], esi
mov byte [ebp - 0x1bc], al
call fcn.00c58400
mov ebx, eax
lea edx, [ebp - 0x274]
xor ecx, ecx
mov dword [ebp - 0x14], ebx
push ebx
inc ecx
call fcn.00c4ba1b
call eax
cmp eax, 0xffffffff
jne 0xc595f0
mov ebx, dword [0xc78768]
lea edi, [ebp - 0xb0]
mov esi, 0xc70f20
mov dword [ebp - 0x90], 0x7e532bc8
push ebx
push ebx
mov edx, 0xc73c20
mov dword [ebp - 0x8c], 0x546b7991
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x88], 0x2fe23765
mov dword [ebp - 0x84], 0xf4e10e7f
mov dword [ebp - 0x80], 0x4559ea19
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x7c], 0xf62d4c6a
mov dword [ebp - 0x78], 0xc312a279
mov dword [ebp - 0x74], 0xb7eff866
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x70], 0xc6489d6c
mov dword [ebp - 0x6c], 0x8fa2e532
mov dword [ebp - 0x68], 0x65666dcd
movsw word es:[edi], word [esi]
call fcn.00c56941
pop ecx
pop ecx
push 9
pop ecx
mov esi, 0xc739a0
lea edi, [ebp - 0x5c]
rep movsd dword es:[edi], dword [esi]
push 0x68
xor eax, eax
pop edx
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], eax
cmp dx, word [ebp - 0x5c]
jne 0xc594d4
xor esi, esi
mov ecx, esi
test dx, dx
je 0xc594d1
cmp word [ebp + ecx - 0x5c], si
je 0xc594d1
inc eax
lea ecx, [eax + eax]
movzx edx, word [ecx + 0xc73c20]
cmp dx, word [ebp + ecx - 0x5c]
je 0xc594b3
mov dword [ebp - 0xc], eax
mov ecx, ebx
call fcn.00c56618
mov esi, dword [ebp - 0xc]
movzx eax, byte [ebp + esi*2 - 0x5c]
movzx esi, byte [esi*2 + 0xc73c20]
sub esi, eax
cmp esi, 0xcb4
jae 0xc59508
push ecx
mov edx, 0xc73e00
mov ecx, 0xc73c20
call fcn.00c5623d
pop ecx
jmp 0xc5951b
and ebx, 0x5f845755
mov ecx, ebx
mov dword [0xc78768], ebx
call fcn.00c56618
xor ecx, ecx
mov edi, ecx
mov eax, ecx
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0xc59521
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
push 0xd
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xb0]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + edi - 0x1b8], bl
cmp esi, 0x100
jb 0xc59532
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
imul eax, dword [0xc78768], 0xf6c98c5d
mov dword [0xc786f8], eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1b8]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
mov byte [ebp + ebx - 0x1b8], cl
movzx eax, byte [ebp + edi - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x90]
mov byte [ebp + esi - 0x60], al
inc esi
cmp esi, 0x2c
jb 0xc59589
mov ebx, dword [ebp - 0x14]
lea edx, [ebp - 0x60]
xor eax, eax
xor ecx, ecx
push eax
push ebx
inc ecx
mov byte [ebp - 0x34], al
call fcn.00c4ba1b
call eax
lea ecx, [ebp - 0x1f0]
call fcn.00c4d05e
lea ecx, [ebp - 0x20c]
mov esi, eax
call fcn.00c4d05e
lea ecx, [ebp - 0x228]
mov edi, eax
call fcn.00c4d05e
mov edx, esi
mov dword [ebp - 0x10], eax
mov ecx, ebx
call fcn.00c4d3c1
cmp dword [ebp + 8], 1
mov ecx, ebx
mov edx, dword [ebp - 0x10]
cmove edx, edi
call fcn.00c4d3c1
xor eax, eax
lea edx, [ebp - 0x30]
push eax
push 0x80
push 2
push eax
push eax
xor ecx, ecx
push 0x40000000
push ebx
inc ecx
call fcn.00c4ba1b
call eax
mov dword [ebp + 8], eax
cmp eax, 2
je 0xc5968f
push 0
lea ecx, [ebp - 4]
push ecx
push dword [ebp - 0xb4]
xor ecx, ecx
lea edx, [ebp - 0x244]
push dword [ebp - 0xb8]
inc ecx
push eax
call fcn.00c4ba1b
call eax
push dword [ebp + 8]
xor ecx, ecx
lea edx, [ebp - 0x1d4]
inc ecx
call fcn.00c4ba1b
call eax
mov ecx, esi
call fcn.00c4d317
push eax
xor eax, eax
push eax
push esi
call fcn.00c4cf49
mov ecx, edi
call fcn.00c4d317
push eax
xor eax, eax
push eax
push edi
call fcn.00c4cf49
mov ecx, dword [ebp - 0x10]
call fcn.00c4d317
push eax
xor eax, eax
push eax
push ecx
call fcn.00c4cf49
mov ecx, ebx
call fcn.00c4d317
push eax
xor eax, eax
push eax
push ebx
call fcn.00c4cf49
add esp, 0x30
mov ecx, esi
call fcn.00c4ba07
mov eax, dword [0xc78768]
mov ecx, edi
add eax, 0x42444c21
mov dword [0xc786f8], eax
call fcn.00c4ba07
mov ecx, dword [ebp - 0x10]
call fcn.00c4ba07
mov ecx, ebx
call fcn.00c4ba07
pop edi
pop esi
pop ebx
leave
ret