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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x12d3ad4]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 8]
push edi
xor edi, edi
push 0x200
mov dword [ebp - 0x4c], edi
call fcn.0106d011
pop ecx
mov ecx, eax
mov dword [ebp - 0x48], ecx
cmp ecx, edi
jne 0x128dffa
mov dword [ebp - 0x4c], 0x8007000e
jmp 0x128e455
lea eax, [ecx + 0x100]
mov byte [esi + 0x2228], 0xb
mov byte [esi + 0x2229], 0xd
mov byte [esi + 0x222a], 9
mov byte [esi + 0x222b], 0xe
mov byte [ecx], 0
push ebx
lea ecx, [ebp - 0x3c]
mov byte [eax], 1
mov ebx, 0x102296c
mov eax, ecx
sub ebx, eax
lea eax, [ebp - 0x33]
cmp ecx, eax
jae 0x128e058
mov al, byte [ebx + ecx]
xor al, byte [edi + 0x1022954]
push 9
mov byte [ecx], al
lea eax, [edi + 1]
xor edx, edx
pop edi
div edi
inc ecx
lea eax, [ecx + ebx]
mov edi, edx
cmp eax, 0x1022975
jb 0x128e02f
lea eax, [ebp - 0x3c]
push eax
mov byte [ecx], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov dword [ebp - 0x40], eax
lea ecx, [ebp - 0x3c]
xor edx, edx
lea eax, [ebp - 0x38]
cmp ecx, eax
jae 0x128e08e
mov al, byte [edx + 0x1022954]
xor byte [ecx], al
lea eax, [edx + 1]
push 9
xor edx, edx
pop edi
div edi
inc ecx
lea eax, [ebp - 0x38]
cmp ecx, eax
jb 0x128e06d
cmp dword [ebp - 0x40], 0
mov byte [ecx], 0
mov dword [ebp - 0x44], 0xba1d
je 0x128e13d
lea ecx, [ebp - 0x20]
mov edi, 0x1022978
mov eax, ecx
xor edx, edx
sub edi, eax
lea eax, [ebp - 7]
cmp ecx, eax
jae 0x128e0d7
mov al, byte [edi + ecx]
xor al, byte [edx + 0x1022954]
push 9
mov byte [ecx], al
lea eax, [edx + 1]
xor edx, edx
inc ecx
pop ebx
div ebx
lea eax, [edi + ecx]
cmp eax, 0x1022991
jb 0x128e0b0
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x40]
mov byte [ecx], 0
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
xor ebx, ebx
cmp edi, ebx
je 0x128e114
push ebx
push 4
lea eax, [ebp - 0x40]
push eax
push 7
mov dword [ebp - 0x40], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call edi
test eax, eax
jne 0x128e114
cmp dword [ebp - 0x40], ebx
je 0x128e114
mov dword [ebp - 0x44], 0xba19
lea ecx, [ebp - 0x20]
xor edx, edx
lea eax, [ebp - 0x1c]
cmp ecx, eax
jae 0x128e13a
mov al, byte [edx + 0x1022954]
xor byte [ecx], al
lea eax, [edx + 1]
push 9
xor edx, edx
pop edi
div edi
inc ecx
lea eax, [ebp - 0x1c]
cmp ecx, eax
jb 0x128e119
mov byte [ecx], 0
test byte [ebp - 0x44], 4
jne 0x128e14e
mov eax, dword [ebp - 0x48]
add eax, 0x100
or byte [eax], 2
mov eax, dword [ebp - 0x48]
add eax, 0x100
lea edx, [eax - 1]
mov dword [ebp - 0x40], eax
sub dword [ebp - 0x40], edx
mov dword [ebp - 0x44], 1
lea ecx, [edx + 1]
mov dl, byte [ecx]
mov al, dl
and al, 0x80
neg al
sbb al, al
and al, 0x1b
mov bl, dl
add bl, bl
xor al, bl
xor al, dl
mov edx, dword [ebp - 0x40]
mov byte [edx + ecx], al
movzx eax, al
mov edi, pe_nt_image_headers32
cmp eax, edi
jge 0x128e471
mov bl, byte [ebp - 0x44]
inc dword [ebp - 0x44]
mov edx, dword [ebp - 0x48]
inc ecx
mov byte [eax + edx], bl
cmp dword [ebp - 0x44], edi
jb 0x128e169
lea ecx, [ebp - 0x20]
mov edi, 0x102296c
mov eax, ecx
xor edx, edx
sub edi, eax
lea eax, [ebp - 0x17]
cmp ecx, eax
jae 0x128e1da
mov al, byte [edi + ecx]
xor al, byte [edx + 0x1022954]
push 9
mov byte [ecx], al
lea eax, [edx + 1]
xor edx, edx
inc ecx
pop ebx
div ebx
lea eax, [edi + ecx]
cmp eax, 0x1022975
jb 0x128e1b3
lea eax, [ebp - 0x20]
push eax
mov byte [ecx], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
xor ebx, ebx
mov dword [ebp - 0x40], eax
lea ecx, [ebp - 0x20]
xor edx, edx
lea eax, [ebp - 0x1c]
cmp ecx, eax
jae 0x128e212
mov al, byte [edx + 0x1022954]
xor byte [ecx], al
lea eax, [edx + 1]
push 9
xor edx, edx
pop edi
div edi
inc ecx
lea eax, [ebp - 0x1c]
cmp ecx, eax
jb 0x128e1f1
mov byte [ecx], 0
mov dword [ebp - 0x44], 0xba1d
cmp dword [ebp - 0x40], ebx
je 0x128e2c0
lea ecx, [ebp - 0x3c]
mov edi, 0x1022978
mov eax, ecx
xor edx, edx
sub edi, eax
lea eax, [ebp - 0x23]
cmp ecx, eax
jae 0x128e25a
mov al, byte [edi + ecx]
xor al, byte [edx + 0x1022954]
push 9
mov byte [ecx], al
lea eax, [edx + 1]
xor edx, edx
inc ecx
pop ebx
div ebx
lea eax, [edi + ecx]
cmp eax, 0x1022991
jb 0x128e233
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x40]
mov byte [ecx], 0
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
xor ebx, ebx
cmp edi, ebx
je 0x128e297
push ebx
push 4
lea eax, [ebp - 0x40]
push eax
push 7
mov dword [ebp - 0x40], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call edi
test eax, eax
jne 0x128e297
cmp dword [ebp - 0x40], ebx
je 0x128e297
mov dword [ebp - 0x44], 0xba19
lea ecx, [ebp - 0x3c]
xor edx, edx
lea eax, [ebp - 0x38]
cmp ecx, eax
jae 0x128e2bd
mov al, byte [edx + 0x1022954]
xor byte [ecx], al
lea eax, [edx + 1]
push 9
xor edx, edx
pop edi
div edi
inc ecx
lea eax, [ebp - 0x38]
cmp ecx, eax
jb 0x128e29c
mov byte [ecx], 0
test byte [ebp - 0x44], 4
jne 0x128e2cd
mov dword [ebp - 0x4c], 0x8004d10b
mov byte [esi + 0x100], 0x63
mov dword [esi + 0x38c], ebx
mov ebx, dword [ebp - 0x48]
lea eax, [esi + 0x100]
inc ebx
sub eax, dword [ebp - 0x48]
mov dword [esi + 0x1200], 0xc66363a5
mov byte [esi + 0x63], 0
mov dword [ebp - 0x40], 1
lea edi, [esi + 0x1205]
mov dword [ebp - 0x54], eax
mov al, byte [ebx]
cmp al, 0xff
ja 0x128e471
movzx ecx, al
mov eax, dword [ebp - 0x48]
add eax, 0x100
sub eax, ecx
movzx eax, byte [eax + 0xff]
mov ecx, eax
mov dword [ebp - 0x44], 4
mov edx, eax
shr edx, 7
add eax, eax
or edx, eax
and edx, 0xff
mov eax, edx
xor ecx, eax
dec dword [ebp - 0x44]
jne 0x128e32c
mov eax, dword [ebp - 0x54]
xor ecx, 0x63
mov byte [eax + ebx], cl
mov al, byte [ebp - 0x40]
mov byte [esi + ecx], al
mov eax, ecx
and al, 0x80
neg al
sbb al, al
and al, 0x1b
mov dl, cl
add dl, dl
xor al, dl
mov byte [edi + 2], al
xor al, cl
and dword [ebp - 0x44], 0
mov byte [edi - 1], al
lea eax, [esi + ecx*4 + 0x200]
mov byte [edi], cl
mov byte [edi + 1], cl
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x44]
movzx eax, byte [esi + eax + 0x2228]
mov ecx, dword [ebp - 0x48]
movzx eax, byte [eax + ecx]
movzx ecx, byte [ebx]
add eax, ecx
cdq
mov ecx, 0xff
idiv ecx
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x50]
add eax, 0x100
mov al, byte [edx + eax]
mov edx, dword [ebp - 0x44]
inc dword [ebp - 0x44]
cmp dword [ebp - 0x44], 4
mov byte [edx + ecx], al
jb 0x128e37e
inc dword [ebp - 0x40]
add edi, 4
inc ebx
cmp dword [ebp - 0x40], 0x100
jb 0x128e305
lea eax, [esi + 0x1600]
mov edx, pe_nt_image_headers32
mov ecx, dword [eax - 0x400]
mov edi, ecx
rol edi, 0x18
mov dword [eax], edi
mov edi, ecx
rol edi, 0x10
rol ecx, 8
mov dword [eax + 0x400], edi
mov dword [eax + 0x800], ecx
mov ecx, dword [eax - 0x1400]
mov edi, ecx
rol edi, 0x18
mov dword [eax - 0x1000], edi
mov edi, ecx
rol edi, 0x10
rol ecx, 8
mov dword [eax - 0xc00], edi
mov dword [eax - 0x800], ecx
add eax, 4
dec edx
jne 0x128e3d9
xor ecx, ecx
push 0xa
lea eax, [esi + 0x2200]
inc ecx
pop esi
mov edx, ecx
shl edx, 0x18
mov dword [eax], edx
mov edx, ecx
and dl, 0x80
movzx edx, dl
neg edx
sbb edx, edx
add cl, cl
movzx ecx, cl
and edx, 0x1b
xor ecx, edx
add eax, 4
dec esi
jne 0x128e431
pop ebx
push dword [ebp - 0x48]
call fcn.0106d020
mov eax, dword [ebp - 0x4c]
pop ecx
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.0128e47a
leave
ret 4
mov dword [ebp - 0x4c], 0xc004d104
jmp 0x128e454