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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x200
push ebx
push esi
push edi
mov dword [ebp - 0x48], ecx
lea edi, [ebp - 0x94]
push 5
pop ecx
mov esi, 0xc70198
mov dword [ebp - 0x7c], edx
rep movsd dword es:[edi], dword [esi]
xor ecx, ecx
mov dword [ebp - 0x2c], 0xfac0e089
mov dword [ebp - 0x28], 0xc7b4276a
mov eax, ecx
mov dword [ebp - 0x24], 0x6ca2e6a9
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x20], 0x4c7fb32a
mov edi, ecx
mov dword [ebp - 0x1c], 0x2687fbdb
mov dword [ebp - 0x18], 0x64dc4cc7
mov byte [ebp + eax - 0x198], al
inc eax
cmp eax, 0x100
jb 0xc5975b
push 0x14
mov esi, ecx
pop ecx
mov dword [ebp - 0x78], ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x198]
mov eax, esi
div ecx
movzx ecx, bl
push 0x14
movzx eax, byte [ebp + edx - 0x94]
add eax, edi
add ecx, eax
movzx edi, cl
pop ecx
mov al, byte [ebp + edi - 0x198]
mov byte [ebp + esi - 0x198], al
inc esi
mov byte [ebp + edi - 0x198], bl
cmp esi, 0x100
jb 0xc59772
mov ebx, dword [0xc78680]
xor eax, eax
mov esi, eax
mov dword [ebp - 0xc], eax
mov edx, eax
or ebx, 0x606abdc7
mov edi, str.InstallDirectory
lea eax, [edx + 1]
movzx edx, al
mov dword [ebp - 0x44], edx
push ebx
push ebx
mov cl, byte [ebp + edx - 0x198]
movzx eax, cl
mov dword [ebp - 0x40], eax
add eax, esi
movzx esi, al
mov dword [ebp - 0x10], esi
mov al, byte [ebp + esi - 0x198]
mov byte [ebp + edx - 0x198], al
mov edx, edi
mov byte [ebp + esi - 0x198], cl
call fcn.00c56941
mov esi, 0xc6f7b4
lea edi, [ebp - 0x90]
xor eax, eax
pop ecx
pop ecx
movsd dword es:[edi], dword [esi]
mov dword [ebp - 8], eax
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 - 0x90], 0x53
jne 0xc5985f
mov cl, 0x53
test cl, cl
je 0xc5985f
cmp byte [ebp + eax - 0x90], 0
je 0xc5985f
push ecx
mov edx, str.failureCount
mov ecx, str.InstallDirectory
call fcn.00c5623d
mov eax, dword [ebp - 8]
inc eax
pop ecx
mov dword [ebp - 8], eax
mov cl, byte [eax + str.SrchCollatorRowset]
cmp cl, byte [ebp + eax - 0x90]
je 0xc5982a
push ecx
mov edi, str.InstallDirectory
mov edx, str.failureCount
mov ecx, edi
call fcn.00c5623d
pop ecx
mov ecx, dword [ebp - 8]
movzx eax, byte [ebp + ecx - 0x90]
movzx ecx, byte [ecx + str.SrchCollatorRowset]
sub ecx, eax
cmp ecx, 0x27a
jbe 0xc598a4
push ecx
mov edx, 0xc7875c
mov ecx, edi
call fcn.00c56392
pop ecx
and ebx, 0x42cdfdca
jmp 0xc598af
call fcn.00c56a87
or ebx, 0x5eb715d5
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0xc]
mov esi, dword [ebp - 0x10]
movzx eax, byte [ebp + edx - 0x198]
add eax, dword [ebp - 0x40]
movzx eax, al
mov al, byte [ebp + eax - 0x198]
xor al, byte [ebp + ecx - 0x2c]
mov byte [ebp + ecx - 0x1b4], al
inc ecx
mov dword [ebp - 0xc], ecx
cmp ecx, 0x18
jb 0xc597cc
push 0x14
pop eax
push 5
xor edx, edx
mov byte [ebp - 0x62], al
pop ecx
mov esi, str.result_out_of_range
mov dword [ebp - 8], ebx
lea edi, [ebp - 0x94]
mov byte [ebp - 0x19c], dl
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x74], 0x7e3f50d9
mov edi, edx
mov dword [ebp - 0x70], 0x65d81030
mov eax, edx
mov dword [ebp - 0x6c], 0xe5985295
mov dword [ebp - 0x68], 0xaf928360
mov word [ebp - 0x64], 0xaa2d
mov dword [ebp - 0x61], 0x33dcbcc2
mov dword [ebp - 0x5d], 0xa1206eb6
mov dword [ebp - 0x59], 0x39c92dc7
mov dword [ebp - 0x55], 0x39b607f1
mov dword [ebp - 0x51], 0xe21ca78e
mov dword [ebp - 0x4d], 0x4c9ee883
mov byte [ebp - 0x49], 0xa4
mov byte [ebp + eax - 0x198], al
inc eax
cmp eax, 0x100
jb 0xc5995a
mov esi, edx
xor edx, edx
mov bl, byte [ebp + esi - 0x198]
push 0x13
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x94]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x198]
mov byte [ebp + esi - 0x198], al
inc esi
mov byte [ebp + edi - 0x198], bl
cmp esi, 0x100
jb 0xc5996b
mov ebx, dword [ebp - 8]
xor eax, eax
mov ecx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov dword [ebp - 0x44], edi
mov al, byte [ebp + edi - 0x198]
mov byte [ebp - 1], al
movzx eax, al
mov dword [ebp - 0x40], eax
add eax, ecx
movzx eax, al
mov ecx, ebx
mov dword [ebp - 0xc], eax
call fcn.00c56618
cmp byte [0xc7875c], 0
je 0xc59a09
mov edi, 0xc7875c
push ebx
push ebx
mov edx, str.InstallDirectory
call fcn.00c56941
imul ebx, ebx, 0x667aff4f
inc edi
pop ecx
pop ecx
cmp byte [edi], 0
jne 0xc599ec
mov edi, dword [ebp - 0x44]
mov ecx, dword [ebp - 0xc]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edi - 0x198], al
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x198], al
movzx eax, byte [ebp + edi - 0x198]
add eax, dword [ebp - 0x40]
movzx eax, al
mov al, byte [ebp + eax - 0x198]
xor al, byte [ebp + esi - 0x74]
mov byte [ebp + esi - 0x200], al
inc esi
cmp esi, 0x2c
jb 0xc599b6
mov esi, str.SrchDSSAdmin
mov dword [ebp - 0x2c], 0xf8225737
lea edi, [ebp - 0x8c]
mov dword [ebp - 0x28], 0x777166fd
xor ecx, ecx
mov dword [ebp - 0x24], 0x1cf1c349
or ebx, 0x412de26
mov byte [ebp - 0x1d4], cl
movsd dword es:[edi], dword [esi]
mov eax, ecx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x20], 0x9c7cbe
mov dword [ebp - 0x1c], 0xe56e8937
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x18], 0x59bbce07
mov dword [ebp - 0xc], ecx
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x198], al
inc eax
cmp eax, 0x100
jb 0xc59a9d
mov esi, dword [ebp - 8]
mov edi, ecx
xor edx, edx
mov bl, byte [ebp + edi - 0x198]
push 0xc
mov eax, edi
or esi, 0x16c34e54
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x8c]
add eax, dword [ebp - 0xc]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0xc], ecx
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edi - 0x198], al
inc edi
mov byte [ebp + ecx - 0x198], bl
cmp edi, 0x100
jb 0xc59ab1
xor eax, eax
mov dword [ebp - 8], esi
mov ebx, dword [ebp - 8]
mov edi, eax
mov dword [ebp - 0x10], eax
mov esi, eax
lea eax, [edi + 1]
xor ebx, 0x42af5bec
movzx edi, al
mov eax, dword [ebp - 0x10]
mov cl, byte [ebp + edi - 0x198]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x10], eax
mov al, byte [ebp + eax - 0x198]
mov byte [ebp + edi - 0x198], al
mov eax, dword [ebp - 0x10]
mov byte [ebp + eax - 0x198], cl
movzx eax, byte [ebp + edi - 0x198]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x198]
xor al, byte [ebp + esi - 0x2c]
mov byte [ebp + esi - 0x1d0], al
inc esi
cmp esi, 0x18
jb 0xc59b0a
push 5
pop ecx
mov esi, 0xc700e8
mov dword [ebp - 0x2c], 0x573abc87
lea edi, [ebp - 0x94]
mov dword [ebp - 0x28], 0xfd623380
rep movsd dword es:[edi], dword [esi]
xor edx, edx
mov dword [ebp - 0x24], 0x3c05c589
mov byte [ebp - 0x1b8], dl
mov eax, edx
mov dword [ebp - 0x20], 0xfc7ec520
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x1c], 0x641e6574
mov edi, edx
mov dword [ebp - 0x18], 0xb7992bde
mov byte [ebp + eax - 0x198], al
inc eax
cmp eax, 0x100
jb 0xc59baf
mov esi, edx
xor edx, edx
mov cl, byte [ebp + esi - 0x198]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x78]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x94]
add eax, edi
add ecx, eax
movzx edi, cl
xor ecx, ecx
mov eax, ecx
cmp byte [str.failureCount], al
je 0xc59c0d
and ebx, 0x93461977
inc eax
cmp byte [eax + str.failureCount], cl
jne 0xc59bef
cmp eax, 0x19e8
jbe 0xc59c0d
and ebx, 0xafce318d
jmp 0xc59c1a
call fcn.00c56a87
add ebx, 0x38b6dafd
xor ecx, ecx
mov al, byte [ebp + edi - 0x198]
mov byte [ebp + esi - 0x198], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + edi - 0x198], al
cmp esi, 0x100
jb 0xc59bc0
mov esi, ecx
mov edx, ecx
cmp byte [str.failureCount], 0
lea eax, [edx + 1]
movzx edx, al
mov al, byte [ebp + edx - 0x198]
movzx edi, al
mov byte [ebp - 1], al
lea eax, [edi + esi]
movzx esi, al
je 0xc59c72
mov eax, str.failureCount
or ebx, 0x46871373
inc eax
cmp byte [eax], 0
jne 0xc59c66
mov al, byte [ebp + esi - 0x198]
mov byte [ebp + edx - 0x198], al
mov al, byte [ebp - 1]
mov byte [ebp + esi - 0x198], al
movzx eax, byte [ebp + edx - 0x198]
add eax, edi
movzx eax, al
mov al, byte [ebp + eax - 0x198]
xor al, byte [ebp + ecx - 0x2c]
mov byte [ebp + ecx - 0x64], al
inc ecx
cmp ecx, 0x18
jb 0xc59c3f
mov esi, str.SrchGatherStatus
mov dword [ebp - 0x2c], 0x766e3e79
lea edi, [ebp - 0x90]
mov dword [ebp - 0x28], 0xf5ee1a7d
xor ecx, ecx
mov dword [ebp - 0x24], 0x1a577930
sub ebx, 0x6f8e3073
mov byte [ebp - 0x4c], cl
movsd dword es:[edi], dword [esi]
mov eax, ecx
mov dword [ebp - 0x20], 0xc52d670d
mov dword [ebp - 0x1c], 0xbe87fbec
mov dword [ebp - 0x18], 0xd9f1a8ad
movsd dword es:[edi], dword [esi]
mov dword [ebp - 8], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov edi, ecx
mov byte [ebp + eax - 0x198], al
inc eax
cmp eax, 0x100
jb 0xc59cf8
mov esi, ecx
mov dl, byte [ebp + esi - 0x198]
mov eax, esi
and eax, 0xf
movzx ecx, dl
movzx eax, byte [ebp + eax - 0x90]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x198]
mov byte [ebp + esi - 0x198], al
inc esi
mov byte [ebp + edi - 0x198], dl
cmp esi, 0x100
jb 0xc59d09
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x198]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x198]
mov byte [ebp + edi - 0x198], al
mov byte [ebp + ebx - 0x198], cl
movzx eax, byte [ebp + edi - 0x198]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x198]
xor al, byte [ebp + esi - 0x2c]
mov byte [ebp + esi - 0x98], al
inc esi
cmp esi, 0x18
jb 0xc59d4d
push 0xa
pop ecx
mov esi, 0xc6f170
mov ebx, dword [ebp - 8]
lea edi, [ebp - 0x3c]
xor eax, eax
rep movsd dword es:[edi], dword [esi]
push 0x49
pop edx
mov byte [ebp - 0x80], al
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], eax
cmp dx, word [ebp - 0x3c]
jne 0xc59de7
xor esi, esi
mov ecx, esi
test dx, dx
je 0xc59de2
cmp word [ebp + ecx - 0x3c], si
je 0xc59de2
inc eax
lea ecx, [eax + eax]
movzx edx, word [ecx + str.InstallDirectory]
cmp dx, word [ebp + ecx - 0x3c]
je 0xc59dc4
mov dword [ebp - 0xc], eax
jmp 0xc59de9
xor esi, esi
mov ecx, ebx
call fcn.00c56618
mov ecx, dword [ebp - 0xc]
movzx eax, byte [ebp + ecx*2 - 0x3c]
movzx ecx, byte [ecx*2 + str.InstallDirectory]
sub ecx, eax
cmp ecx, 0x230a
jne 0xc59e17
call fcn.00c56a87
imul ebx, ebx, 0xde880e03
jmp 0xc59e1d
and ebx, 0xd808b164
mov ecx, 0xf000
mov dword [0xc78680], ebx
call fcn.00c4b9d3
mov ebx, eax
mov ecx, 0x7800
mov dword [ebp - 0x78], ebx
call fcn.00c4b9d3
mov ecx, 0x208
mov edi, eax
call fcn.00c4b9d3
lea ecx, [ebp - 0x1b4]
mov dword [ebp - 0xc], eax
call fcn.00c4d02f
lea ecx, [ebp - 0x200]
mov dword [ebp - 0x44], eax
call fcn.00c4d05e
lea ecx, [ebp - 0x1d0]
mov dword [ebp - 0x10], eax
call fcn.00c4d05e
lea ecx, [ebp - 0x64]
mov dword [ebp - 8], eax
call fcn.00c4d05e
push dword [ebp - 8]
lea edx, [ebp - 0x98]
mov dword [ebp - 0x40], eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
push 2
pop ecx
call fcn.00c4ba1b
call eax
mov edx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0xc]
push 0xf000
push ebx
call fcn.00c56f32
add esp, 0x14
test eax, eax
je 0xc59f11
mov ecx, ebx
call fcn.00c4d317
push eax
mov edx, ebx
mov ecx, edi
call fcn.00c4d11c
mov ebx, dword [ebp - 0x44]
pop ecx
mov ecx, 0x400
call fcn.00c4b9d3
mov ecx, dword [ebp - 0x48]
mov edx, ebx
mov dword [ecx], eax
xor eax, eax
test esi, esi
mov ecx, edi
cmovne ecx, eax
call fcn.00c4d470
mov ecx, eax
test ecx, ecx
je 0xc59f09
inc esi
call fcn.00c4d309
push eax
mov eax, dword [ebp - 0x48]
push ecx
push dword [eax]
call fcn.00c4cef6
add dword [ebp - 0x48], 4
add esp, 0xc
cmp esi, 0x1e
jl 0xc59ec6
mov eax, dword [ebp - 0x7c]
mov ebx, dword [ebp - 0x78]
mov dword [eax], esi
mov esi, dword [ebp - 0x44]
mov ecx, esi
call fcn.00c4d309
push eax
xor eax, eax
push eax
push esi
call fcn.00c4cf49
mov ecx, dword [ebp - 0x10]
call fcn.00c4d309
push eax
xor eax, eax
push eax
push ecx
call fcn.00c4cf49
mov ecx, dword [ebp - 8]
call fcn.00c4d309
push eax
xor eax, eax
push eax
push ecx
call fcn.00c4cf49
mov ecx, dword [ebp - 0x40]
call fcn.00c4d309
push eax
xor eax, eax
push eax
push ecx
call fcn.00c4cf49
mov ecx, esi
call fcn.00c4ba07
mov esi, dword [0xc78680]
mov edx, str.InstallDirectory
push esi
push esi
call fcn.00c56941
xor eax, eax
add esp, 0x38
mov ecx, eax
cmp byte [0xc7875c], al
je 0xc59fc1
and esi, 0xdb53725b
inc ecx
cmp byte [ecx + 0xc7875c], al
jne 0xc59f83
mov eax, dword [ebp - 0x7c]
mov dword [0xc78680], esi
cmp eax, ecx
jae 0xc59fc1
mov edx, esi
cmp eax, 0x2359
jne 0xc59fae
lea edx, [esi - 0x3df75dce]
inc eax
lea esi, [edx + 0x71b39633]
mov edx, esi
cmp eax, ecx
jb 0xc59fa1
mov dword [0xc78680], esi
mov ecx, dword [ebp - 0x10]
call fcn.00c4ba07
mov ecx, dword [ebp - 8]
call fcn.00c4ba07
mov ecx, dword [ebp - 0x40]
call fcn.00c4ba07
push 0xf000
xor esi, esi
push esi
push ebx
call fcn.00c4cf49
add esp, 0xc
test edi, edi
je 0xc5a04d
mov eax, dword [0xc78680]
mov ecx, esi
cmp byte [str.failureCount], cl
je 0xc5a02f
imul eax, eax, 0x5ff86f79
inc ecx
cmp byte [ecx + str.failureCount], 0
jne 0xc59ffd
cmp ecx, 0x26db
jbe 0xc5a02f
add eax, 0x6a322ed0
mov edx, str.InstallDirectory
push eax
push eax
mov dword [0xc78680], eax
call fcn.00c56941
pop ecx
pop ecx
jmp 0xc5a03e
and eax, 0x5cdca0f
mov dword [0xc78680], eax
call fcn.00c56a87
push 0x7800
push esi
push edi
call fcn.00c4cf49
add esp, 0xc
push 0x208
push esi
mov esi, dword [ebp - 0xc]
push esi
call fcn.00c4cf49
add esp, 0xc
mov ecx, ebx
call fcn.00c4ba07
mov ecx, edi
call fcn.00c4ba07
mov ecx, esi
call fcn.00c4ba07
pop edi
pop esi
pop ebx
leave
ret