Function at 0x42a520
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov esi, dword [esp + 0x70]
mov ebx, dword [esp + 0x74]
mov edx, dword [esi + 0x18c]
test edx, edx
je 0x42a95c
mov dword [esp + 4], str.gamma_table_being_rebuilt
mov dword [esp], esi
call fcn.0042b170
mov dword [esp], esi
call fcn.0042a3a0
mov edi, dword [esi + 0x188]
cmp ebx, 8
jg 0x42a5f9
mov ecx, 0x186a0
test edi, edi
jle 0x42a5d7
mov ecx, dword [esi + 0x2ec]
test ecx, ecx
je 0x42a5d7
fnstcw word [esp + 0x4e]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fdivr qword [0x48c448]
mov dword [esp + 0x10], edi
movzx eax, word [esp + 0x4e]
and ah, 0xf3
or ah, 4
mov word [esp + 0x4c], ax
fild dword [esp + 0x10]
fdivp st(1)
fadd dword [0x48c334]
fldcw word [esp + 0x4c]
frndint
fldcw word [esp + 0x4e]
fld qword [0x48c338]
fcompi st(1)
jb 0x42a5d3
fld dword [0x48c340]
fxch st(1)
fcomi st(1)
fstp st(1)
jae 0x42ac03
fstp st(0)
jmp 0x42a5d5
fstp st(0)
xor ecx, ecx
lea edx, [esi + 0x18c]
mov eax, esi
call fcn.004267b0
test dword [esi + 0x7c], 0x600080
jne 0x42aa20
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [esi + 0x14f], 2
jne 0x42a938
movzx eax, byte [esi + 0x1a7]
mov ecx, dword [esi + 0x7c]
lea edx, [eax - 1]
and ecx, 0x4000400
cmp dl, 0xe
jbe 0x42a96f
test ecx, ecx
je 0x42ab5b
mov dword [esp + 0x1c], 7
mov eax, 5
mov ebp, 0x800
mov edx, 0x20
mov dword [esp + 0x38], 0x7ff
mov ebx, 8
mov dword [esp + 0x10], 3
mov dword [esp + 0x40], 5
mov byte [esp + 0x3f], 5
mov dword [esi + 0x184], eax
mov dword [esp + 0x28], 0x186a0
test edi, edi
jle 0x42a6d9
fild dword [esi + 0x2ec]
fmul qword [0x48c328]
mov dword [esp + 0x20], edi
fnstcw word [esp + 0x4e]
fild dword [esp + 0x20]
movzx eax, word [esp + 0x4e]
fmulp st(1)
fadd dword [0x48c334]
and ah, 0xf3
or ah, 4
mov word [esp + 0x4c], ax
fldcw word [esp + 0x4c]
frndint
fldcw word [esp + 0x4e]
fld qword [0x48c338]
fcompi st(1)
jb 0x42a6cf
fld dword [0x48c340]
fxch st(1)
fcomi st(1)
fstp st(1)
jae 0x42abe1
fstp st(0)
jmp 0x42a6d1
fstp st(0)
mov dword [esp + 0x28], 0
mov dword [esp], esi
xor edi, edi
mov dword [esp + 4], edx
call fcn.0042d660
mov dword [esp + 0x30], ebp
mov ebp, edi
mov edi, esi
mov dword [esp + 0x20], eax
mov dword [esi + 0x190], eax
mov esi, ebx
mov ebx, eax
mov dword [esp + 4], 0x200
mov dword [esp], edi
call fcn.0042d8a0
mov dword [ebx + ebp*4], eax
add ebp, 1
cmp ebp, esi
jb 0x42a6fd
mov ebp, dword [esp + 0x30]
fild dword [esp + 0x28]
mov esi, edi
xor ebx, ebx
fmul qword [0x48c328]
mov dword [esp + 0x48], esi
mov edi, pe_nt_image_headers32
mov dword [esp + 0x44], ebp
fstp qword [esp + 0x30]
lea esi, [esi]
movzx eax, di
movsd xmm0, qword [esp + 0x30]
lea esi, [edi - 0x80]
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fld dword [0x48c330]
movsd qword [esp + 8], xmm0
fdivp st(1)
fstp qword [esp]
call fcn.0046a270
fld qword [0x48c450]
fnstcw word [esp + 0x4e]
fmulp st(1)
fadd dword [0x48c334]
movzx eax, word [esp + 0x4e]
and ah, 0xf3
or ah, 4
mov word [esp + 0x4c], ax
mov eax, dword [esp + 0x38]
fldcw word [esp + 0x4c]
frndint
fldcw word [esp + 0x4e]
fstp qword [esp + 0x28]
cvttsd2si edx, qword [esp + 0x28]
movzx edx, dx
imul edx, eax
mov eax, 0x80008001
add edx, 0x8000
mul edx
shr edx, 0xf
lea ebp, [edx + 1]
cmp ebx, ebp
jae 0x42a7fc
mov word [esp + 0x28], di
lea esi, cs:[esi]
nop
movzx ecx, byte [esp + 0x10]
mov edi, ebx
mov eax, dword [esp + 0x1c]
shr edi, cl
and eax, ebx
mov ecx, edi
mov edi, dword [esp + 0x20]
mov eax, dword [edi + eax*4]
mov word [eax + ecx*2], si
mov eax, ebx
add ebx, 1
cmp edx, eax
jne 0x42a7d0
movzx edi, word [esp + 0x28]
mov ebx, ebp
add di, 0x101
cmp di, 0x7f
jne 0x42a740
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
cmp ebx, ebp
jae 0x42a84b
movzx ecx, byte [esp + 0x40]
mov edx, 0xff
mov edi, dword [esp + 0x20]
sar edx, cl
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x10], esi
mov esi, edx
mov eax, ebx
and esi, ebx
shr eax, cl
add ebx, 1
mov esi, dword [edi + esi*4]
mov word [esi + eax*2], 0xffff
cmp ebx, ebp
jne 0x42a82f
mov esi, dword [esp + 0x10]
test dword [esi + 0x7c], 0x600080
je 0x42a5f1
fild dword [esi + 0x2ec]
fdivr dword [0x48c43c]
fnstcw word [esp + 0x4e]
movzx eax, word [esp + 0x4e]
and ah, 0xf3
or ah, 4
mov word [esp + 0x4c], ax
fadd dword [0x48c334]
fldcw word [esp + 0x4c]
frndint
fldcw word [esp + 0x4e]
fld qword [0x48c338]
fcompi st(1)
jb 0x42a8a8
fld dword [0x48c340]
fxch st(1)
fcomi st(1)
fstp st(1)
jae 0x42abd2
fstp st(0)
jmp 0x42a8aa
fstp st(0)
xor eax, eax
mov dword [esp], eax
movzx ebx, byte [esp + 0x3f]
mov eax, esi
lea edx, [esi + 0x1a0]
mov ecx, ebx
call fcn.00425fd0
mov eax, dword [esi + 0x188]
test eax, eax
jle 0x42abc2
fnstcw word [esp + 0x4e]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr dword [0x48c43c]
movzx eax, word [esp + 0x4e]
and ah, 0xf3
or ah, 4
mov word [esp + 0x4c], ax
fadd dword [0x48c334]
fldcw word [esp + 0x4c]
frndint
fldcw word [esp + 0x4e]
fld qword [0x48c338]
fcompi st(1)
jb 0x42ab67
fld dword [0x48c340]
fxch st(1)
fcomi st(1)
fstp st(1)
jb 0x42ab6b
fstp qword [esp + 0x10]
cvttsd2si eax, qword [esp + 0x10]
jmp 0x42ab6f
movzx edx, byte [esi + 0x1a4]
movzx eax, byte [esi + 0x1a5]
cmp al, dl
cmovb eax, edx
movzx edx, byte [esi + 0x1a6]
cmp al, dl
cmovb eax, edx
jmp 0x42a60d
mov eax, dword [esi + 0x190]
test eax, eax
jne 0x42a53d
jmp 0x42a555
mov edx, 0x10
sub edx, eax
test ecx, ecx
jne 0x42aaf0
mov eax, 8
cmp dl, al
cmovbe eax, edx
mov byte [esp + 0x3f], al
movzx eax, al
mov ecx, eax
mov dword [esi + 0x184], eax
mov eax, 0x186a0
test edi, edi
jle 0x42abad
mov eax, dword [esi + 0x2ec]
test eax, eax
je 0x42abad
fnstcw word [esp + 0x4e]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr qword [0x48c448]
mov dword [esp + 0x10], edi
movzx eax, word [esp + 0x4e]
and ah, 0xf3
or ah, 4
mov word [esp + 0x4c], ax
fild dword [esp + 0x10]
fdivp st(1)
fadd dword [0x48c334]
fldcw word [esp + 0x4c]
frndint
fldcw word [esp + 0x4e]
fld qword [0x48c338]
fcompi st(1)
jb 0x42aba5
fld dword [0x48c340]
fxch st(1)
fcomi st(1)
fstp st(1)
jb 0x42aba9
fstp qword [esp + 0x10]
cvttsd2si eax, qword [esp + 0x10]
jmp 0x42abad
fild dword [esi + 0x2ec]
fdivr dword [0x48c43c]
fnstcw word [esp + 0x4e]
movzx eax, word [esp + 0x4e]
and ah, 0xf3
or ah, 4
mov word [esp + 0x4c], ax
fadd dword [0x48c334]
fldcw word [esp + 0x4c]
frndint
fldcw word [esp + 0x4e]
fld qword [0x48c338]
fcompi st(1)
jb 0x42aa70
fld dword [0x48c340]
fxch st(1)
fcomi st(1)
fstp st(1)
jae 0x42abf4
fstp st(0)
jmp 0x42aa72
fstp st(0)
xor ecx, ecx
mov eax, esi
lea edx, [esi + 0x198]
call fcn.004267b0
mov eax, dword [esi + 0x188]
test eax, eax
jle 0x42abca
fnstcw word [esp + 0x4e]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivr dword [0x48c43c]
movzx eax, word [esp + 0x4e]
and ah, 0xf3
or ah, 4
mov word [esp + 0x4c], ax
fadd dword [0x48c334]
fldcw word [esp + 0x4c]
frndint
fldcw word [esp + 0x4e]
fld qword [0x48c338]
fcompi st(1)
jb 0x42ab89
fld dword [0x48c340]
fxch st(1)
fcomi st(1)
fstp st(1)
jb 0x42ab8d
fstp qword [esp + 0x10]
cvttsd2si ecx, qword [esp + 0x10]
jmp 0x42ab91
cmp dl, 4
jbe 0x42a62a
mov eax, 8
cmp dl, al
mov ecx, eax
cmovbe ecx, edx
mov edx, 8
movzx eax, cl
mov byte [esp + 0x3f], cl
sub edx, eax
mov dword [esp + 0x40], eax
mov ebp, edx
mov dword [esp + 0x10], edx
mov edx, 1
mov ecx, ebp
mov ebx, edx
shl ebx, cl
mov ecx, 0x10
sub ecx, eax
shl edx, cl
mov ecx, ebp
mov ebp, 0xff
sub edx, 1
mov dword [esp + 0x38], edx
mov edx, 4
shl edx, cl
movzx ecx, byte [esp + 0x3f]
shr ebp, cl
mov dword [esp + 0x1c], ebp
mov ebp, ebx
shl ebp, 8
jmp 0x42a663
mov byte [esp + 0x3f], 0
xor eax, eax
jmp 0x42a991
fstp st(0)
jmp 0x42ab6d
fstp st(0)
xor eax, eax
mov dword [esp + 0x70], eax
add esp, 0x5c
lea edx, [esi + 0x19c]
mov ecx, ebx
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00425fd0
fstp st(0)
jmp 0x42ab8f
fstp st(0)
xor ecx, ecx
add esp, 0x5c
lea edx, [esi + 0x194]
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.004267b0
fstp st(0)
jmp 0x42abab
fstp st(0)
xor eax, eax
mov dword [esp], eax
lea edx, [esi + 0x190]
mov eax, esi
call fcn.00425fd0
jmp 0x42a84b
mov eax, dword [esi + 0x2ec]
jmp 0x42ab6f
mov ecx, dword [esi + 0x2ec]
jmp 0x42ab91
fstp qword [esp + 0x10]
cvttsd2si eax, qword [esp + 0x10]
jmp 0x42a8ac
fstp qword [esp + 0x20]
cvttsd2si eax, qword [esp + 0x20]
mov dword [esp + 0x28], eax
jmp 0x42a6d9
fstp qword [esp + 0x10]
cvttsd2si ecx, qword [esp + 0x10]
jmp 0x42aa74
fstp qword [esp + 0x10]
cvttsd2si ecx, qword [esp + 0x10]
jmp 0x42a5d7