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

Disassembly:
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
shr eax, 2
mov ecx, eax
imul ecx, dword [esp + 0xc]
add ecx, dword [esp + 8]
push ebp
mov ebp, dword [esp + 0x28]
push esi
mov esi, dword [esp + 0xc]
shr edx, 2
lea ecx, [esi + ecx*4]
mov esi, edx
imul esi, dword [esp + 0x24]
add esi, dword [esp + 0x20]
push edi
mov edi, dword [esp + 0x20]
lea esi, [edi + esi*4]
mov edi, dword [esp + 0x38]
sub eax, ebp
sub edx, ebp
cmp edi, 0xc
ja case.default.0x44040b
push ebx
jmp dword [edi*4 + 0x440d48]
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], edi
cmp dword [esp + 0x34], 0
jle 0x440528
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
mov ebx, dword [esi]
mov ebp, dword [ecx]
mov dword [esp + 0x1c], ebp
shr ebp, 0x18
mov edi, ebx
shr edi, 0x18
mov edx, 0xff
sub edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
shr edx, 7
mov dword [esp + 0x18], edx
mov edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], ebp
shr edx, 7
mov ebp, edi
sub ebp, edx
add ebp, dword [esp + 0x14]
mov dword [esp + 0x14], ebp
je 0x440506
shr eax, 0x10
and eax, 0xff
imul eax, dword [esp + 0x18]
mov edx, ebx
shr edx, 0x10
and edx, 0xff
imul edx, edi
add eax, edx
xor edx, edx
div ebp
shl ebp, 8
movzx edx, bh
imul edx, edi
movzx ebx, bl
imul ebx, edi
or eax, ebp
shl eax, 8
mov dword [esp + 0x24], eax
movzx eax, byte [esp + 0x1d]
imul eax, dword [esp + 0x18]
add eax, edx
xor edx, edx
div dword [esp + 0x14]
mov edx, dword [esp + 0x24]
or edx, eax
movzx eax, byte [esp + 0x1c]
imul eax, dword [esp + 0x18]
shl edx, 8
mov dword [esp + 0x1c], edx
xor edx, edx
add eax, ebx
div dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
or edx, eax
mov dword [ecx], edx
jmp 0x440517
and ebx, 0xfefefe
and eax, 0xfefefe
add ebx, eax
shr ebx, 1
mov dword [ecx], ebx
add ecx, 4
add esi, 4
sub dword [esp + 0x2c], 1
jne 0x440445
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x440432
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], edi
cmp dword [esp + 0x34], 0
jle 0x440656
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
mov ebp, dword [ecx]
mov ebx, dword [esi]
mov dword [esp + 0x1c], ebp
shr ebp, 0x18
mov edi, ebx
shr edi, 0x18
mov edx, 0xff
sub edx, ebp
imul edx, edi
mov eax, 0x80808081
mul edx
shr edx, 7
mov dword [esp + 0x18], edx
mov edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
shr edx, 7
sub edi, edx
add edi, ebp
mov dword [esp + 0x14], edi
je 0x440630
mov edx, dword [esp + 0x1c]
shr edx, 0x10
and edx, 0xff
imul edx, ebp
mov eax, ebx
shr eax, 0x10
and eax, 0xff
imul eax, dword [esp + 0x18]
add eax, edx
xor edx, edx
div edi
movzx edx, byte [esp + 0x1d]
shl edi, 8
imul edx, ebp
or eax, edi
shl eax, 8
mov dword [esp + 0x24], eax
movzx eax, bh
imul eax, dword [esp + 0x18]
add eax, edx
xor edx, edx
div dword [esp + 0x14]
mov edx, dword [esp + 0x24]
movzx edi, byte [esp + 0x1c]
imul edi, ebp
or edx, eax
movzx eax, bl
imul eax, dword [esp + 0x18]
shl edx, 8
mov dword [esp + 0x1c], edx
xor edx, edx
add eax, edi
div dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
or edx, eax
mov dword [ecx], edx
jmp 0x440645
mov eax, dword [esp + 0x1c]
and ebx, 0xfefefe
and eax, 0xfefefe
add ebx, eax
shr ebx, 1
mov dword [ecx], ebx
add ecx, 4
add esi, 4
sub dword [esp + 0x2c], 1
jne 0x440573
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x440560
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], edi
mov edi, edi
cmp dword [esp + 0x34], 0
jle 0x44070c
mov edi, dword [esp + 0x34]
nop
mov ebx, dword [ecx]
mov edx, dword [esi]
shr edx, 0x10
and edx, 0xff
mov eax, ebx
shr eax, 0x10
and eax, 0xff
imul edx, eax
mov eax, 0x80808081
mul edx
shr edx, 7
mov ebp, edx
movzx edx, byte [esi + 1]
movzx eax, bh
imul edx, eax
mov eax, 0x80808081
mul edx
shr edx, 7
shl ebp, 8
or ebp, edx
movzx edx, byte [esi]
movzx eax, bl
imul edx, eax
mov eax, 0x80808081
mul edx
shl ebp, 8
shr edx, 7
or ebp, edx
and ebx, 0xff000000
or ebp, ebx
mov dword [ecx], ebp
add ecx, 4
add esi, 4
sub edi, 1
jne 0x4406a0
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x1c], 1
jne 0x440690
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], edi
cmp dword [esp + 0x34], 0
jle 0x440835
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], eax
mov ebp, dword [ecx]
mov ebx, dword [esi]
mov edi, ebp
and edi, 0xff0000
and ebx, 0xff0000
mov edx, edi
imul edx, ebx
mov eax, ebp
and eax, 0xff000000
mov dword [esp + 0x14], eax
mov eax, 0x80808081
mul edx
shr edx, 7
sub edi, edx
add edi, ebx
cmp edi, 0xff0000
mov dword [esp + 0x1c], edi
jbe 0x44079d
mov dword [esp + 0x1c], 0xff0000
jmp 0x4407a5
and dword [esp + 0x1c], 0xff0000
mov edi, dword [esi]
mov ebx, ebp
and ebx, 0xff00
and edi, 0xff00
mov edx, ebx
imul edx, edi
mov eax, 0x80808081
mul edx
shr edx, 7
sub ebx, edx
add ebx, edi
mov edi, ebx
cmp edi, 0xff00
jbe 0x4407d9
mov edi, 0xff00
jmp 0x4407e1
and dword [esp + 0x1c], 0xff00
mov ebx, dword [esi]
and ebx, 0xff
and ebp, 0xff
mov edx, ebx
imul edx, ebp
mov eax, 0x80808081
mul edx
shr edx, 7
sub ebx, edx
add ebx, ebp
mov eax, ebx
cmp eax, 0xff
jbe 0x440812
mov eax, 0xff
jmp 0x440817
and eax, 0xff
or eax, edi
or eax, dword [esp + 0x1c]
add ecx, 4
or eax, dword [esp + 0x14]
add esi, 4
sub dword [esp + 0x18], 1
mov dword [ecx - 4], eax
jne 0x440757
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x2c], 1
jne 0x440744
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x18], edi
lea ecx, [ecx]
cmp dword [esp + 0x34], 0
jle 0x440953
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1c], eax
mov edi, dword [esi]
mov eax, dword [ecx]
shr edi, 0x10
mov ebx, eax
and ebx, 0xff000000
and edi, 0xff
cmp edi, 0xff
mov dword [esp + 0x14], ebx
je 0x4408d1
shr eax, 0x10
and eax, 0xff
imul eax, eax, 0xff
mov ebp, 0xff
sub ebp, edi
xor edx, edx
div ebp
mov edi, eax
cmp edi, 0xff
jbe 0x4408ce
mov edi, 0xff0000
jmp 0x4408d1
shl edi, 0x10
movzx ebp, byte [esi + 1]
cmp ebp, 0xff
je 0x440908
movzx eax, byte [ecx + 1]
imul eax, eax, 0xff
mov edx, 0xff
sub edx, ebp
mov ebp, edx
xor edx, edx
div ebp
mov ebp, eax
cmp ebp, 0xff
jbe 0x440905
mov ebp, 0xff00
jmp 0x440908
shl ebp, 8
movzx edx, byte [esi]
cmp edx, 0xff
je 0x44093a
movzx eax, byte [ecx]
imul eax, eax, 0xff
mov ebx, 0xff
sub ebx, edx
xor edx, edx
div ebx
mov ebx, dword [esp + 0x14]
mov edx, eax
cmp edx, 0xff
jbe 0x44093a
mov edx, 0xff
or edx, ebp
or edx, edi
or edx, ebx
mov dword [ecx], edx
add ecx, 4
add esi, 4
sub dword [esp + 0x1c], 1
jne 0x440883
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x18], 1
jne 0x440870
pop ebx
pop edi
pop esi
pop ebp
ret
mov edx, dword [esp + 0x38]
test edx, edx
jle 0x440d41
lea edi, [eax*4]
mov esi, edx
test ebp, ebp
jle 0x4409a0
mov edx, ebp
mov eax, dword [ecx]
mov ebx, eax
not ebx
xor ebx, eax
and ebx, 0xffffff
xor ebx, eax
mov dword [ecx], ebx
add ecx, 4
sub edx, 1
jne 0x440986
add ecx, edi
sub esi, 1
jne 0x440980
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x14], edi
lea esp, [esp]
cmp dword [esp + 0x34], 0
jle 0x440a5a
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], eax
mov edx, dword [ecx]
mov edi, dword [esi]
mov dword [esp + 0x1c], edi
mov eax, edx
and edi, 0xff0000
and eax, 0xff0000
mov ebx, edx
add edi, eax
and ebx, 0xff000000
cmp edi, 0xff0000
jbe 0x440a0f
mov edi, 0xff0000
mov ebp, dword [esp + 0x1c]
mov eax, edx
and ebp, 0xff00
and eax, 0xff00
add ebp, eax
cmp ebp, 0xff00
jbe 0x440a2f
mov ebp, 0xff00
movzx eax, byte [esp + 0x1c]
movzx edx, dl
add eax, edx
cmp eax, 0xff
jbe 0x440a45
mov eax, 0xff
or eax, ebp
or eax, edi
or eax, ebx
mov dword [ecx], eax
add ecx, 4
add esi, 4
sub dword [esp + 0x18], 1
jne 0x4409e3
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x14], 1
jne 0x4409d0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x18], edi
cmp dword [esp + 0x34], 0
jle 0x440b04
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx]
mov edi, dword [esi]
mov ebx, edi
mov edx, eax
and ebx, 0xff0000
and edx, 0xff0000
mov ebp, eax
sub edx, ebx
and ebp, 0xff000000
test edx, edx
jns 0x440ac9
xor edx, edx
mov ebx, edi
mov edi, eax
and ebx, 0xff00
and edi, 0xff00
sub edi, ebx
test edi, edi
jns 0x440ae1
xor edi, edi
movzx ebx, byte [esi]
movzx eax, al
sub eax, ebx
test eax, eax
jns 0x440aef
xor eax, eax
or eax, edi
or eax, edx
or eax, ebp
mov dword [ecx], eax
add ecx, 4
add esi, 4
sub dword [esp + 0x1c], 1
jne 0x440aa5
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x18], 1
jne 0x440a92
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add edx, edx
add eax, eax
add edx, edx
mov ebx, edi
jmp 0x440b38
mov ebp, dword [esp + 0x34]
test ebp, ebp
jle 0x440b4f
mov edi, dword [esp + 0x34]
mov ebp, dword [esi]
mov dword [ecx], ebp
add ecx, 4
add esi, 4
sub edi, 1
jne 0x440b40
add ecx, eax
add esi, edx
sub ebx, 1
jne 0x440b34
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add edx, edx
add eax, eax
add edx, edx
mov ebx, edi
jmp 0x440b79
mov ebp, dword [esp + 0x34]
test ebp, ebp
jle 0x440b9b
mov edi, dword [esp + 0x34]
mov ebp, dword [esi]
xor ebp, dword [ecx]
add ecx, 4
and ebp, 0xffffff
xor ebp, dword [esi]
add esi, 4
sub edi, 1
mov dword [ecx - 4], ebp
jne 0x440b81
add ecx, eax
add esi, edx
sub ebx, 1
jne 0x440b75
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov ebp, edi
cmp dword [esp + 0x34], 0
jle 0x440c02
mov ebx, dword [esp + 0x34]
mov edi, dword [ecx]
movzx edx, byte [esi + 3]
mov eax, edi
shr eax, 0x18
imul edx, eax
mov eax, 0x80808081
mul edx
shr edx, 7
shl edx, 0x18
and edi, 0xffffff
or edx, edi
mov dword [ecx], edx
add ecx, 4
add esi, 4
sub ebx, 1
jne 0x440bd2
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub ebp, 1
jne 0x440bc7
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440d41
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], edi
cmp dword [esp + 0x34], 0
jle 0x440d2e
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
mov ebx, dword [esi]
mov ebp, dword [ecx]
mov dword [esp + 0x1c], ebp
shr ebp, 0x18
mov edi, ebx
shr edi, 0x19
mov edx, 0xff
sub edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
shr edx, 7
mov dword [esp + 0x18], edx
mov edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], ebp
shr edx, 7
mov ebp, edi
sub ebp, edx
add ebp, dword [esp + 0x14]
mov dword [esp + 0x14], ebp
je 0x440d0c
shr eax, 0x10
and eax, 0xff
imul eax, dword [esp + 0x18]
mov edx, ebx
shr edx, 0x10
and edx, 0xff
imul edx, edi
add eax, edx
xor edx, edx
div ebp
shl ebp, 8
movzx edx, bh
imul edx, edi
movzx ebx, bl
imul ebx, edi
or eax, ebp
shl eax, 8
mov dword [esp + 0x24], eax
movzx eax, byte [esp + 0x1d]
imul eax, dword [esp + 0x18]
add eax, edx
xor edx, edx
div dword [esp + 0x14]
mov edx, dword [esp + 0x24]
or edx, eax
movzx eax, byte [esp + 0x1c]
imul eax, dword [esp + 0x18]
shl edx, 8
mov dword [esp + 0x1c], edx
xor edx, edx
add eax, ebx
div dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
or edx, eax
mov dword [ecx], edx
jmp 0x440d1d
and ebx, 0xfefefe
and eax, 0xfefefe
add ebx, eax
shr ebx, 1
mov dword [ecx], ebx
add ecx, 4
add esi, 4
sub dword [esp + 0x2c], 1
jne 0x440c47
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x440c34
pop ebx
pop edi
pop esi
pop ebp
ret