Function at 0x4ac160
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4df275
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5265f0]
xor eax, esp
push eax
lea eax, [esp + 0x18]
mov dword fs:[0], eax
mov esi, dword [esp + 0x28]
mov edi, dword [esi + 0xc]
push 0x4e593c
lea eax, [esi + 0x1c]
push 0x20
push eax
call fcn.004c5045
fld dword [0x4e3ee0]
fstp dword [esi + 0x204]
add esp, 0xc
mov dword [esi + 0x18], 9
test byte [edi + 6], 2
je 0x4ac1d6
fld dword [0x4e3ed4]
fstp dword [esi + 0x204]
test byte [edi + 6], 2
je 0x4ac1d6
fld dword [str._n_TN]
fstp dword [esi + 0x204]
movzx eax, byte [edi + 3]
and eax, 0xf
add eax, 0xffffffff
cmp eax, 5
ja case.default.0x4ac1e9
jmp dword [eax*4 + 0x4acba8]
push 0x4f19fc
lea ecx, [esi + 0x18c]
push 0x20
push ecx
call fcn.00422580
fld dword [0x4f19f8]
mov dword [esi + 0x1ac], 0x20001
jmp 0x4ac2cc
push str.UDIMM
lea edx, [esi + 0x18c]
push 0x20
push edx
call fcn.00422580
fld dword [0x4f19f8]
mov dword [esi + 0x1ac], 0x20002
jmp 0x4ac2cc
push 0x4f19e8
lea eax, [esi + 0x18c]
push 0x20
push eax
call fcn.00422580
fld dword [0x4f19e4]
mov dword [esi + 0x1ac], 0x20003
jmp 0x4ac2cc
push 0x4f19d8
lea ecx, [esi + 0x18c]
push 0x20
push ecx
call fcn.00422580
fld dword [0x4f19d4]
mov dword [esi + 0x1ac], 0x20004
jmp 0x4ac2cc
push str.Mini_RDIMM
lea edx, [esi + 0x18c]
push 0x20
push edx
call fcn.00422580
mov dword [esi + 0x1ac], 0x20005
jmp 0x4ac2c6
push 0x4f19bc
lea eax, [esi + 0x18c]
push 0x20
push eax
call fcn.00422580
mov dword [esi + 0x1ac], 0x20006
fld dword [0x4f19b8]
fstp dword [esi + 0x1b0]
add esp, 0xc
movzx eax, byte [edi + 4]
shr eax, 4
and eax, 7
cmp eax, 3
ja case.default.0x4ac2e4
jmp dword [eax*4 + 0x4acbc0]
mov dword [esi + 0x1c4], 8
jmp case.default.0x4ac2e4
mov dword [esi + 0x1c4], 0x10
jmp case.default.0x4ac2e4
mov dword [esi + 0x1c4], 0x20
jmp case.default.0x4ac2e4
mov dword [esi + 0x1c4], 0x40
movzx eax, byte [edi + 4]
or ebx, 0xffffffff
and eax, 0xf
cmp eax, 9
mov ebp, ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x14], ebx
ja case.default.0x4ac332
jmp dword [eax*4 + 0x4acbd0]
mov ebp, pe_nt_image_headers32
jmp case.default.0x4ac332
mov ebp, 0x200
jmp case.default.0x4ac332
mov ebp, 0x400
jmp case.default.0x4ac332
mov ebp, 0x800
jmp case.default.0x4ac332
mov ebp, 0x1000
jmp case.default.0x4ac332
mov ebp, 0x2000
jmp case.default.0x4ac332
mov ebp, 0x4000
jmp case.default.0x4ac332
mov ebp, 0x8000
jmp case.default.0x4ac332
mov ebp, 0x10000
jmp case.default.0x4ac332
mov ebp, 0x20000
movzx eax, byte [edi + 7]
mov ecx, eax
and ecx, 7
cmp ecx, 3
mov edx, 4
ja case.default.0x4ac390
jmp dword [ecx*4 + 0x4acbf8]
mov dword [esp + 0x28], edx
jmp case.default.0x4ac390
mov dword [esp + 0x28], 8
jmp case.default.0x4ac390
mov dword [esp + 0x28], 0x10
jmp case.default.0x4ac390
mov dword [esp + 0x28], 0x20
shr eax, 3
and eax, 7
cmp eax, 3
ja case.default.0x4ac3c4
jmp dword [eax*4 + 0x4acc08]
mov dword [esp + 0x14], 1
jmp case.default.0x4ac3c4
mov dword [esp + 0x14], 2
jmp case.default.0x4ac3c4
mov dword [esp + 0x14], 3
jmp case.default.0x4ac3c4
mov dword [esp + 0x14], edx
movzx eax, byte [edi + 8]
and eax, 7
cmp eax, 3
ja case.default.0x4ac3f9
jmp dword [eax*4 + 0x4acc18]
mov ebx, 8
jmp case.default.0x4ac3f9
mov ebx, 0x10
jmp case.default.0x4ac3f9
mov ebx, 0x20
jmp case.default.0x4ac3f9
mov ebx, 0x40
push ebp
call fcn.00413bf0
add esp, 4
test eax, eax
je 0x4ac478
push ebx
call fcn.00413bf0
add esp, 4
test eax, eax
je 0x4ac478
mov ecx, dword [esp + 0x28]
push ecx
call fcn.00413bf0
add esp, 4
test eax, eax
je 0x4ac478
mov edx, dword [esp + 0x14]
push edx
call fcn.00413bf0
add esp, 4
test eax, eax
je 0x4ac478
mov eax, ebx
cdq
idiv dword [esp + 0x28]
mov ecx, eax
mov eax, ebp
cdq
and edx, 7
add eax, edx
sar eax, 3
imul ecx, eax
imul ecx, dword [esp + 0x14]
mov dword [esi + 0x184], ecx
movzx edx, byte [edi + 0xa]
movzx eax, byte [edi + 0xb]
mov dword [esp + 0x28], edx
movzx ecx, byte [edi + 0xc]
fild dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x28]
fdivp st(1)
fstp dword [esp + 0x28]
fild dword [esp + 0x14]
fmul dword [esp + 0x28]
fst dword [esp + 0x14]
fld dword [esp + 0x14]
fdivr qword [0x505b98]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld st(0)
fld qword [0x4e3028]
fadd st(1), st(0)
fxch st(1)
call fcn.004c51b0
fxch st(1)
fadd st(0), st(0)
mov dword [esi + 0x1d0], eax
fmul qword [0x4e78e0]
fdiv qword [0x505ba8]
fadd st(1)
call fcn.004c51b0
fld qword [0x4e78e8]
fdivrp st(2)
mov ebp, eax
imul ebp, ebp, 0x64
faddp st(1)
mov dword [esi + 0x1cc], ebp
call fcn.004c51b0
push ebp
push 0x4f191c
lea ebx, [esi + 0x3c]
push 0x20
push ebx
mov dword [esi + 0x1d4], eax
call fcn.00422580
add esp, 0x10
test byte [edi + 0xe], 1
je 0x4ac567
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 0
je 0x4ac547
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac549
xor eax, eax
fld dword [0x4e3e4c]
or ebp, 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
push eax
mov dword [esp + 0x24], ebp
call fcn.004aac30
jmp 0x4ac56a
or ebp, 0xffffffff
test byte [edi + 0xe], 2
je 0x4ac5ae
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 1
je 0x4ac593
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac595
xor eax, eax
fld dword [0x4e3e84]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xe], 4
je 0x4ac5f2
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 2
je 0x4ac5d7
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac5d9
xor eax, eax
fld dword [0x4e3e7c]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xe], 8
je 0x4ac636
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 3
je 0x4ac61b
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac61d
xor eax, eax
fld dword [0x4e3e74]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xe], 0x10
je 0x4ac67a
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 4
je 0x4ac65f
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac661
xor eax, eax
fld dword [0x4e3e6c]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xe], 0x20
je 0x4ac6be
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 5
je 0x4ac6a3
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac6a5
xor eax, eax
fld dword [0x4e3e64]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xe], 0x40
je 0x4ac702
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 6
je 0x4ac6e7
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac6e9
xor eax, eax
fld dword [0x4e3e5c]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xe], 0x80
je 0x4ac746
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 7
je 0x4ac72b
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac72d
xor eax, eax
fld dword [0x4e3e94]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xf], 1
je 0x4ac78a
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 8
je 0x4ac76f
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac771
xor eax, eax
fld dword [0x4e3e8c]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xf], 2
je 0x4ac7ce
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 9
je 0x4ac7b3
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac7b5
xor eax, eax
fld dword [0x4e3e44]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xf], 4
je 0x4ac812
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 0xa
je 0x4ac7f7
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac7f9
xor eax, eax
fld dword [0x4e3e3c]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xf], 8
je 0x4ac856
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 0xb
je 0x4ac83b
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac83d
xor eax, eax
fld dword [0x4e3e34]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xf], 0x10
je 0x4ac89a
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 0xc
je 0x4ac87f
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac881
xor eax, eax
fld dword [0x4e3e2c]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xf], 0x20
je 0x4ac8de
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 0xd
je 0x4ac8c3
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac8c5
xor eax, eax
fld dword [0x4e3e24]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
test byte [edi + 0xf], 0x40
je 0x4ac922
push 0xc
call fcn.004b3e57
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x20], 0xe
je 0x4ac907
mov ecx, eax
call fcn.004a5db0
jmp 0x4ac909
xor eax, eax
fld dword [0x4e3e20]
push eax
fstp dword [eax + 4]
mov ecx, dword [esi + 0x1d8]
mov dword [esp + 0x24], ebp
call fcn.004aac30
movzx ecx, byte [edi + 0x10]
mov eax, dword [esi + 0x1d0]
cmp eax, 0x29b
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fmul dword [esp + 0x28]
fstp dword [esp + 0x14]
jg 0x4ac9a9
je 0x4ac985
cmp eax, 0x190
je 0x4ac96d
cmp eax, 0x215
jne case.0x4ac9bf.81
cmp ecx, 0x5a
je 0x4ac977
cmp ecx, 0x69
je case.0x4ac994.84
cmp ecx, 0x78
jne case.0x4ac9bf.81
push 0x4f1918
jmp 0x4ac9d2
cmp ecx, 0x64
je 0x4ac97e
cmp ecx, 0x78
jne case.0x4ac9bf.81
push 0x4f1910
jmp 0x4ac9d2
push 0x4e274c
jmp 0x4ac9d2
lea eax, [ecx - 0x54]
cmp eax, 0x24
ja case.0x4ac9bf.81
movzx edx, byte [eax + 0x4acc3c]
jmp dword [edx*4 + 0x4acc28]
push 0x4f1914
jmp 0x4ac9d2
push str.JHEFG
jmp 0x4ac9d2
cmp eax, 0x320
jne case.0x4ac9bf.81
lea eax, [ecx - 0x50]
cmp eax, 0x1e
ja case.0x4ac9bf.81
movzx eax, byte [eax + 0x4acc78]
jmp dword [eax*4 + 0x4acc64]
push 0x4f190c
jmp 0x4ac9d2
push 0x4ec20c
push 0x20
push ebx
call fcn.00422660
add esp, 0xc
mov eax, dword [esi + 0x1d8]
test eax, eax
je 0x4aca3d
mov edx, dword [eax + 4]
test edx, edx
je 0x4aca3d
mov ecx, dword [edx + 4]
test ecx, ecx
je 0x4aca3d
fld dword [esp + 0x14]
fldz
fld qword [0x505b98]
jmp 0x4aca05
fxch st(1)
fxch st(1)
fcom dword [ecx + 4]
fnstsw ax
test ah, 5
jp 0x4aca23
fld st(2)
fdiv dword [ecx + 4]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fdivr st(2)
fstp dword [ecx + 8]
test edx, edx
je 0x4aca37
mov eax, dword [edx + 8]
test eax, eax
je 0x4aca37
mov ecx, dword [eax + 4]
test ecx, ecx
mov edx, eax
jne 0x4aca03
fstp st(2)
fstp st(0)
fstp st(0)
movzx ecx, byte [edi + 0x12]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fld dword [esp + 0x28]
fld st(0)
fmulp st(2)
fxch st(1)
fstp dword [esi + 0x1dc]
movzx edx, byte [edi + 0x13]
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fmul st(1)
fstp dword [esi + 0x1e0]
movzx eax, byte [edi + 0x14]
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fmul st(1)
fstp dword [esi + 0x1e4]
movzx ecx, byte [edi + 0x15]
movzx edx, byte [edi + 0x16]
and ecx, 0xf
shl ecx, 8
add ecx, edx
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
fmul st(1)
fstp dword [esi + 0x1e8]
movzx eax, byte [edi + 0x15]
movzx ecx, byte [edi + 0x17]
shr eax, 4
shl eax, 8
add eax, ecx
mov dword [esp + 0x28], eax
fimul dword [esp + 0x28]
fstp dword [esi + 0x1ec]
movzx edx, byte [edi + 0x3c]
and edx, 0x1f
mov dword [esi + 0x1b4], edx
movzx eax, byte [edi + 0x75]
and eax, 0x7f
mov ebp, eax
cmp ebp, 7
jle 0x4acadf
mov ebp, 7
xor eax, eax
test ebp, ebp
jle 0x4acaf6
push ebp
lea eax, [esi + 0x5c]
push 0x7f
push eax
call fcn.004c43d0
add esp, 0xc
mov eax, ebp
movzx ecx, byte [edi + 0x76]
lea edx, [esi + 0x64]
mov byte [eax + esi + 0x5c], cl
push edx
lea eax, [esi + 0x5c]
push eax
call fcn.004a8540
mov cl, byte [edi + 0x78]
mov al, cl
shr al, 4
mov dl, 0xa
imul dl
and cl, 0xf
add al, cl
mov byte [esi + 0x200], al
mov cl, byte [edi + 0x79]
mov al, cl
shr al, 4
imul dl
and cl, 0xf
add al, cl
mov byte [esi + 0x201], al
movzx eax, byte [edi + 0x7a]
movzx ecx, byte [edi + 0x7b]
movzx edx, byte [edi + 0x7c]
shl eax, 8
add eax, ecx
movzx ecx, byte [edi + 0x7d]
shl eax, 8
add eax, edx
shl eax, 8
add esp, 8
add eax, ecx
lea ecx, [edi + 0x80]
mov dword [esi + 0x188], eax
lea ebp, [esi + 0x164]
mov edi, 0x12
movzx eax, byte [ecx]
cmp al, 0xff
sete dl
sub dl, 1
add ecx, 1
add ebp, 1
and edx, eax
sub edi, 1
mov byte [ebp - 1], dl
jne 0x4acb70
mov byte [esi + 0x176], 0
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4