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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x114
xor ecx, ecx
push ebx
push esi
mov eax, 0x12
push edi
mov edi, 0xe06
xor esi, esi
lea ebx, [eax + 0x77]
mov dword [ebp - 0x54], 0x2863
mov dword [ebp - 4], 0x6115
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 8], 0x340c
mov dword [ebp - 0x34], 0xee
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x48], 0x701e
mov dword [ebp - 0x38], 0x2de6
mov dword [ebp - 0x3c], 0x7420
mov edx, 0x2d34
mov dword [ebp - 0xc], 0xea
lea esp, [esp]
cmp eax, 0xea
cmovl eax, dword [ebp - 0xc]
dec edx
jne 0x401cc0
lea esp, [esp]
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x401cdf
dec eax
or eax, 0xfffffffe
inc eax
jne 0x401ce4
add ecx, 5
cmp ecx, 0x618d
jl 0x401cd0
lea esp, [esp]
mov eax, 0xcb8727c1
imul edi
add edx, edi
sar edx, 7
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401cf0
inc esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x401d20
add esi, 2
cmp esi, 0x6f63
jl 0x401d05
cmp dword [ebp + 8], 0
je 0x4022e7
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x4022e7
mov esi, dword [ebp + 0x10]
mov eax, dword [esi + 0x314]
xor eax, dword [esi + 0x308]
lea edi, [esi + 0x308]
cmp ecx, eax
jl 0x4022e7
mov eax, 0x627c
mov ecx, 0x45
cmp ebx, ecx
cmovg ebx, ecx
dec eax
jne 0x401d64
mov eax, 0x27ff
mov edx, 0x64
mov ecx, 0xc6
jmp 0x401d80
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401d80
mov ecx, 0x60e7
lea ecx, [ecx]
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d90
mov eax, 0x24168e19
imul dword [ebp - 0x54]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x54], eax
jne 0x401da5
mov eax, 0x42ca
mov edx, 0x51
mov ecx, 0x1b
jmp 0x401dd0
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401dd0
mov ecx, 0x7ea3
lea ecx, [ecx]
mov eax, 0xe070381d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401de0
call fcn.00403390
mov dword [esi + 0x350], eax
mov eax, dword [edi]
xor dword [esi + 0x3c], eax
mov esi, dword [esi + 0x3c]
mov dword [ebp - 0xc], esi
mov esi, 0x219d
mov eax, 0x51eb851f
imul esi
sar edx, 3
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x401e10
mov esi, dword [ebp - 0xc]
jmp 0x401e30
mov eax, 0x4325c53f
imul dword [ebp - 4]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x401e30
mov eax, dword [ebp + 0x10]
xor edx, edx
mov dword [eax + 0xcc], edi
mov eax, dword [ebp + 0xc]
div esi
mov edi, dword [ebp + 0x10]
mov ebx, 0x1b
mov edx, 0xec
mov ecx, eax
mov dword [edi + 0x318], ecx
mov eax, 0x13bb
cmp edx, ebx
cmovg edx, ebx
dec eax
jne 0x401e71
imul ecx, esi
mov dword [ebp - 0xc], ecx
mov dword [edi + 0x320], ecx
mov ecx, 0x74c2
lea ebx, [ebx]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e90
mov ecx, dword [ebp - 0xc]
xor esi, esi
test ecx, ecx
je 0x401ef7
mov ebx, dword [ebp + 8]
nop
mov eax, dword [edi + 0xcc]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0xcc]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0xcc]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0xcc]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x320]
jb 0x401eb0
mov eax, dword [edi + 0x3c]
mov dword [ebp - 4], 0
dec eax
je 0x402018
xor esi, esi
lea ebx, [ebx]
mov eax, dword [ebp - 0x40]
inc eax
cmp eax, 0x7e4d
jl 0x401f13
mov ebx, dword [ebp - 0x44]
mov dword [ebp - 0x40], eax
cmp ebx, 0x790a
jge 0x401f46
mov ecx, 0x7909
sub ecx, ebx
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea ebx, [ebx + eax*2]
add ebx, 0xa
mov dword [ebp - 0x44], ebx
mov eax, dword [edi + 0x3c]
dec eax
push eax
push 1
push edi
call fcn.00403200
add esp, 0xc
cmp dword [ebp - 0x10], 0x3b6b
mov bl, al
jge 0x401f8d
mov edi, dword [ebp - 0x10]
inc edi
mov eax, 0x38e38e39
imul edi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, edi
lea eax, [eax + eax*8]
sub ecx, eax
jne 0x401f7f
inc edi
cmp edi, 0x3b6b
jl 0x401f64
mov dword [ebp - 0x10], edi
mov edi, dword [ebp + 0x10]
cmp esi, 0x1688
jge 0x401fb8
inc esi
mov eax, 0x66666667
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*4]
sub ecx, eax
jne 0x401fb0
inc esi
cmp esi, 0x1688
jl 0x401f95
mov ecx, dword [ebp - 4]
xor eax, eax
lea ecx, [ecx]
cmp bl, byte [edi + eax + 0x188]
je 0x401fd0
inc eax
cmp eax, ecx
jbe 0x401fc0
jmp 0x401fd2
xor bl, bl
mov eax, dword [ebp - 0x4c]
inc eax
cmp eax, 0x37aa
jl 0x401fd5
mov dword [ebp - 0x4c], eax
test bl, bl
je 0x401fef
mov byte [edi + ecx + 0x188], bl
inc ecx
mov dword [ebp - 4], ecx
mov ebx, dword [ebp - 8]
test ebx, ebx
je 0x40200c
mov eax, 0x6bca1af3
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401ff6
mov dword [ebp - 8], ebx
mov eax, dword [edi + 0x3c]
dec eax
cmp ecx, eax
jb 0x401f10
push 0x5d
lea eax, [ebp - 0xb3]
push 0
push eax
mov byte [ebp - 0xb4], 0
call fcn.00403080
lea eax, [ebp - 0xb4]
push eax
call fcn.00402a60
mov dword [ebp - 0x30], 0x5df1106c
mov dword [ebp - 0x2c], 0xa792455c
movq xmm0, qword [ebp - 0x30]
movq qword [edi + 0x6c], xmm0
mov dword [ebp - 0x28], 0xb2b75bb8
mov dword [ebp - 0x24], 0x73adb00a
movq xmm0, qword [ebp - 0x28]
movq qword [edi + 0x74], xmm0
mov dword [ebp - 0x20], 0xf3d4cb55
mov dword [ebp - 0x1c], 0
movq xmm0, qword [ebp - 0x20]
add esp, 0x10
movq qword [edi + 0x7c], xmm0
mov byte [edi + 0x84], 0
xor eax, eax
nop
xor byte [ebp + eax - 0xb4], 0x54
inc eax
cmp eax, 0x5c
jb 0x402090
mov ecx, 0x718e
mov eax, 0xb40b40b5
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020a3
mov dword [ebp - 8], ecx
cmp dword [edi + 0x3c], ecx
jbe 0x40222d
mov ebx, 0xdc
lea esp, [esp]
mov edx, dword [ebp - 0x34]
mov eax, 0x29ee
jmp 0x4020e0
cmp edx, 0xdc
cmovl edx, ebx
dec eax
jne 0x4020e0
movzx ebx, byte [edi + ecx + 0x188]
imul ebx, dword [edi + 0x318]
add ebx, dword [ebp + 8]
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x34], edx
inc eax
cmp eax, 5
jl 0x402104
push 0x5d
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x113]
push 0
push eax
mov dword [edi + 0xc], ebx
mov byte [ebp - 0x114], 0
call fcn.00403080
push 0x5d
lea eax, [ebp - 0x114]
push ebx
push eax
call fcn.00403050
mov ecx, 0x17
lea esi, [ebp - 0xb4]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x14]
add esp, 0x18
cmp esi, 0x28
jge 0x402171
inc esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x402169
inc esi
cmp esi, 0x28
jl 0x402150
mov dword [ebp - 0x14], esi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0xc]
call eax
push 0x5d
lea eax, [ebp - 0x114]
push eax
push ebx
call fcn.00403050
mov ecx, dword [ebp - 0x48]
add esp, 0xc
test ecx, ecx
je 0x4021aa
mov eax, 0xb70fbb5b
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402192
mov dword [ebp - 0x48], ecx
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x4021c7
mov eax, 0x44d72045
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021b1
mov dword [ebp - 0x38], ecx
xor esi, esi
cmp dword [edi + 0x318], esi
jbe 0x402218
mov eax, dword [edi + 0xcc]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0xcc]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0xcc]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0xcc]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x318]
jb 0x4021d1
mov ecx, dword [ebp - 8]
inc ecx
mov dword [ebp - 8], ecx
mov ebx, 0xdc
cmp ecx, dword [edi + 0x3c]
jb 0x4020d0
call fcn.00403390
mov ecx, eax
mov dword [edi + 0x31c], ecx
mov ebx, 0x4e9e
nop
mov eax, 0x3159721f
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402240
add ecx, 0xfffffffe
push ecx
push dword [edi + 0x350]
call fcn.004010a0
push 0x5a896f9
lea ebx, [edi + 0x6c]
push ebx
call fcn.00401bc0
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 0x10
lea esi, [edx + eax]
sar esi, 8
mov ebx, 0x55a7
jmp 0x402290
mov eax, 0x4fec04ff
imul ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402290
lea ebx, [edi + 0x6c]
test esi, esi
je 0x4022d0
mov edi, dword [ebp + 8]
lea ecx, [ecx]
push ebx
push 0x100
push edi
call fcn.004030e0
add esp, 0xc
add edi, 0x100
dec esi
jne 0x4022b0
jmp 0x4022d0
mov eax, 0x4c8f8d29
imul dword [ebp - 0x3c]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x3c], eax
jne 0x4022d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret