Function at 0x474b9c
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffefc
mov esi, edx
mov edi, eax
mov ebx, 0x4aac9c
mov byte [esp], 0
cmp byte [0x4a8108], 0
je 0x474bc1
call fcn.00474e10
test esi, esi
jbe 0x474e02
test esi, 3
jne 0x474e02
call fcn.00474a28
cmp esi, eax
ja 0x474e02
mov byte [0x4a8108], 1
shr esi, 3
xor ecx, ecx
mov byte [ebx + ecx], cl
mov eax, ecx
xor edx, edx
div esi
mov ebp, edi
add edx, ebp
mov al, byte [edx]
mov byte [esp + ecx + 1], al
mov eax, ecx
inc eax
mov byte [ebx + ecx + 1], al
lea eax, [ecx + 1]
xor edx, edx
div esi
add edx, ebp
mov al, byte [edx]
mov byte [esp + ecx + 2], al
mov eax, ecx
add al, 2
mov byte [ebx + ecx + 2], al
lea eax, [ecx + 2]
xor edx, edx
div esi
add edx, ebp
mov al, byte [edx]
mov byte [esp + ecx + 3], al
mov eax, ecx
add al, 3
mov byte [ebx + ecx + 3], al
lea eax, [ecx + 3]
xor edx, edx
div esi
add edx, ebp
mov al, byte [edx]
mov byte [esp + ecx + 4], al
mov eax, ecx
add al, 4
mov byte [ebx + ecx + 4], al
lea eax, [ecx + 4]
xor edx, edx
div esi
add edx, edi
mov al, byte [edx]
mov byte [esp + ecx + 5], al
mov eax, ecx
add al, 5
mov byte [ebx + ecx + 5], al
lea eax, [ecx + 5]
xor edx, edx
div esi
add edx, edi
mov al, byte [edx]
mov byte [esp + ecx + 6], al
mov eax, ecx
add al, 6
mov byte [ebx + ecx + 6], al
lea eax, [ecx + 6]
xor edx, edx
div esi
add edx, edi
mov al, byte [edx]
mov byte [esp + ecx + 7], al
mov eax, ecx
add al, 7
mov byte [ebx + ecx + 7], al
lea eax, [ecx + 7]
xor edx, edx
div esi
add edx, edi
mov al, byte [edx]
mov byte [esp + ecx + 8], al
add ecx, 8
cmp ecx, 0xff
jb 0x474bee
xor eax, eax
xor ecx, ecx
movzx edi, byte [ebx + ecx]
add eax, edi
xor edx, edx
mov dl, byte [esp + ecx + 1]
add eax, edx
and eax, 0xff
mov esi, edi
mov dl, byte [ebx + eax]
mov byte [ebx + ecx], dl
mov edx, esi
mov byte [ebx + eax], dl
xor edx, edx
mov dl, byte [ebx + ecx + 1]
add eax, edx
xor edx, edx
mov dl, byte [esp + ecx + 2]
add eax, edx
and eax, 0xff
movzx esi, byte [ebx + ecx + 1]
mov dl, byte [ebx + eax]
mov byte [ebx + ecx + 1], dl
mov edx, esi
mov byte [ebx + eax], dl
xor edx, edx
mov dl, byte [ebx + ecx + 2]
add eax, edx
xor edx, edx
mov dl, byte [esp + ecx + 3]
add eax, edx
and eax, 0xff
movzx esi, byte [ebx + ecx + 2]
mov dl, byte [ebx + eax]
mov byte [ebx + ecx + 2], dl
mov edx, esi
mov byte [ebx + eax], dl
xor edx, edx
mov dl, byte [ebx + ecx + 3]
add eax, edx
xor edx, edx
mov dl, byte [esp + ecx + 4]
add eax, edx
and eax, 0xff
movzx esi, byte [ebx + ecx + 3]
mov dl, byte [ebx + eax]
mov byte [ebx + ecx + 3], dl
mov edx, esi
mov byte [ebx + eax], dl
xor edx, edx
mov dl, byte [ebx + ecx + 4]
add eax, edx
xor edx, edx
mov dl, byte [esp + ecx + 5]
add eax, edx
and eax, 0xff
movzx esi, byte [ebx + ecx + 4]
mov dl, byte [ebx + eax]
mov byte [ebx + ecx + 4], dl
mov edx, esi
mov byte [ebx + eax], dl
xor edx, edx
mov dl, byte [ebx + ecx + 5]
add eax, edx
xor edx, edx
mov dl, byte [esp + ecx + 6]
add eax, edx
and eax, 0xff
movzx esi, byte [ebx + ecx + 5]
mov dl, byte [ebx + eax]
mov byte [ebx + ecx + 5], dl
mov edx, esi
mov byte [ebx + eax], dl
xor edx, edx
mov dl, byte [ebx + ecx + 6]
add eax, edx
xor edx, edx
mov dl, byte [esp + ecx + 7]
add eax, edx
and eax, 0xff
movzx esi, byte [ebx + ecx + 6]
mov dl, byte [ebx + eax]
mov byte [ebx + ecx + 6], dl
mov edx, esi
mov byte [ebx + eax], dl
xor edx, edx
mov dl, byte [ebx + ecx + 7]
add eax, edx
xor edx, edx
mov dl, byte [esp + ecx + 8]
add eax, edx
and eax, 0xff
movzx esi, byte [ebx + ecx + 7]
mov dl, byte [ebx + eax]
mov byte [ebx + ecx + 7], dl
mov edx, esi
mov byte [ebx + eax], dl
add ecx, 8
cmp ecx, 0xff
jb 0x474cb4
mov edx, 0x4aad9c
mov eax, ebx
mov ecx, pe_nt_image_headers32
call fcn.00402e08
mov byte [esp], 1
mov al, byte [esp]
add esp, 0x104
pop ebp
pop edi
pop esi
pop ebx
ret