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

Disassembly:
push 0x14
mov eax, 0x101726a8
call fcn.1003f70b
mov esi, dword [ebp + 8]
mov edi, dword [esi + 0xc]
cmp byte [edi + 2], 0xf
lea eax, [esi + 0x20]
je 0x10012c71
push 0x10178070
push 0x20
push eax
call fcn.1003dc98
jmp 0x10012c85
push str.LPDDR3
push 0x20
push eax
call fcn.1003dc98
mov dword [esi + 0x1c], 1
fld dword [0x101f6ae0]
add esp, 0xc
fstp dword [esi + 0x36c]
mov dword [esi + 0x18], 9
test byte [edi + 6], 2
mov ebx, str.DDR3L
je 0x10012cc1
fld dword [0x101f6ac8]
push ebx
lea eax, [esi + 0x20]
fstp dword [esi + 0x36c]
push 0x20
push eax
call fcn.1003dc98
add esp, 0xc
test byte [edi + 6], 4
je 0x10012ce2
fld dword [0x101f6ab0]
push ebx
lea eax, [esi + 0x20]
fstp dword [esi + 0x36c]
push 0x20
push eax
call fcn.1003dc98
add esp, 0xc
movzx eax, byte [edi + 3]
and eax, 0xf
dec eax
je 0x10012dc4
dec eax
je 0x10012da5
dec eax
je 0x10012d80
dec eax
je 0x10012d5b
dec eax
je 0x10012d33
dec eax
jne 0x10012df0
push str.Mini_UDIMM
lea eax, [esi + 0x2e8]
push 0x20
push eax
call fcn.1013b440
fld dword [0x10177e30]
mov dword [esi + 0x308], 0x20006
jmp 0x10012de7
push str.Mini_RDIMM
lea eax, [esi + 0x2e8]
push 0x20
push eax
call fcn.1013b440
fld dword [0x10177e30]
mov dword [esi + 0x308], 0x20005
jmp 0x10012de7
push 0x10178054
lea eax, [esi + 0x2e8]
push 0x20
push eax
call fcn.1013b440
fld dword [0x10178050]
mov dword [esi + 0x308], 0x20004
jmp 0x10012de7
push str.SO_DIMM
lea eax, [esi + 0x2e8]
push 0x20
push eax
call fcn.1013b440
fld dword [0x1017804c]
mov dword [esi + 0x308], 0x20003
jmp 0x10012de7
push str.UDIMM
lea eax, [esi + 0x2e8]
push 0x20
push eax
call fcn.1013b440
mov dword [esi + 0x308], 0x20002
jmp 0x10012de1
push str.RDIMM
lea eax, [esi + 0x2e8]
push 0x20
push eax
call fcn.1013b440
mov dword [esi + 0x308], 0x20001
fld dword [0x10177ff0]
fstp dword [esi + 0x30c]
add esp, 0xc
movzx eax, byte [edi + 4]
push 7
shr eax, 4
pop ebx
and eax, ebx
xor edx, edx
sub eax, edx
je 0x10012e2f
dec eax
je 0x10012e23
dec eax
je 0x10012e17
dec eax
jne 0x10012e39
mov dword [esi + 0x320], 0x40
jmp 0x10012e39
mov dword [esi + 0x320], 0x20
jmp 0x10012e39
mov dword [esi + 0x320], 0x10
jmp 0x10012e39
mov dword [esi + 0x320], 8
movzx eax, byte [edi + 4]
or dword [ebp + 8], 0xffffffff
or dword [ebp - 0x10], 0xffffffff
or dword [ebp - 0x14], 0xffffffff
and eax, 0xf
cmp eax, 9
ja case.default.0x10012e51
jmp dword [eax*4 + 0x100136df]
mov dword [ebp + 8], 0x100
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x200
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x400
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x800
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x1000
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x2000
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x4000
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x8000
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x10000
jmp case.default.0x10012e51
mov dword [ebp + 8], 0x20000
movzx eax, byte [edi + 7]
mov ecx, eax
and ecx, ebx
sub ecx, edx
je 0x10012ee0
dec ecx
je 0x10012ed7
dec ecx
je 0x10012ece
dec ecx
jne 0x10012ee7
mov dword [ebp - 0x14], 0x20
jmp 0x10012ee7
mov dword [ebp - 0x14], 0x10
jmp 0x10012ee7
mov dword [ebp - 0x14], 8
jmp 0x10012ee7
mov dword [ebp - 0x14], 4
shr eax, 3
and eax, ebx
sub eax, edx
je 0x10012f2c
dec eax
je 0x10012f20
dec eax
je 0x10012f14
dec eax
je 0x10012f08
dec eax
jne 0x10012f36
mov dword [esi + 0x324], 8
jmp 0x10012f36
mov dword [esi + 0x324], 4
jmp 0x10012f36
mov dword [esi + 0x324], 3
jmp 0x10012f36
mov dword [esi + 0x324], 2
jmp 0x10012f36
mov dword [esi + 0x324], 1
movzx eax, byte [edi + 8]
and eax, ebx
sub eax, edx
je 0x10012f64
dec eax
je 0x10012f5b
dec eax
je 0x10012f52
dec eax
jne 0x10012f6b
mov dword [ebp - 0x10], 0x40
jmp 0x10012f6b
mov dword [ebp - 0x10], 0x20
jmp 0x10012f6b
mov dword [ebp - 0x10], 0x10
jmp 0x10012f6b
mov dword [ebp - 0x10], 8
push dword [ebp + 8]
call fcn.10002430
pop ecx
test eax, eax
je 0x10012fc4
push dword [ebp - 0x10]
call fcn.10002430
pop ecx
test eax, eax
je 0x10012fc4
push dword [ebp - 0x14]
call fcn.10002430
pop ecx
test eax, eax
je 0x10012fc4
mov ebx, dword [esi + 0x324]
push ebx
call fcn.10002430
pop ecx
test eax, eax
je 0x10012fc4
mov eax, dword [ebp - 0x10]
cdq
idiv dword [ebp - 0x14]
mov ecx, eax
mov eax, dword [ebp + 8]
cdq
and edx, 7
add eax, edx
sar eax, 3
imul ecx, eax
imul ecx, ebx
mov dword [esi + 0x2e0], ecx
mov al, byte [edi + 0xb]
test al, al
jbe 0x10012fe2
movzx ecx, byte [edi + 0xa]
mov dword [ebp + 8], ecx
movzx eax, al
fild dword [ebp + 8]
mov dword [ebp + 8], eax
fild dword [ebp + 8]
fdivp st(1)
jmp 0x10012fe8
fld dword [0x10177e28]
movzx eax, byte [edi + 0xc]
fstp dword [ebp - 0x14]
mov dword [ebp + 8], eax
fild dword [ebp + 8]
fmul dword [ebp - 0x14]
fst dword [ebp + 8]
fld dword [ebp + 8]
fdivr qword [0x101f6bc0]
fstp dword [ebp + 8]
fld dword [ebp + 8]
fld qword [0x101f69b8]
fadd st(1), st(0)
fxch st(1)
call fcn.1003f8e0
fld dword [ebp + 8]
fadd st(0), st(0)
mov dword [esi + 0x334], eax
fmul qword [0x10177db8]
fdiv qword [0x101f6c38]
fadd st(1)
call fcn.1003f8e0
fld qword [0x101f7078]
fdivrp st(2)
mov ebx, eax
imul ebx, ebx, 0x64
faddp st(1)
mov dword [esi + 0x330], ebx
call fcn.1003f8e0
push ebx
push str.PC3__d
mov dword [esi + 0x338], eax
lea eax, [esi + 0x40]
push 0x20
push eax
call fcn.1013b440
add esp, 0x10
test byte [edi + 0xe], 1
push 0xc
pop ebx
je 0x100130aa
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
and dword [ebp - 4], 0
test eax, eax
je 0x1001308f
mov ecx, eax
call fcn.100074e2
jmp 0x10013091
xor eax, eax
fld dword [0x101f6b94]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xe], 2
je 0x100130e9
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 1
test eax, eax
je 0x100130ce
mov ecx, eax
call fcn.100074e2
jmp 0x100130d0
xor eax, eax
fld dword [0x101f6b90]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xe], 4
je 0x10013128
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 2
test eax, eax
je 0x1001310d
mov ecx, eax
call fcn.100074e2
jmp 0x1001310f
xor eax, eax
fld dword [0x101f6b8c]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xe], 8
je 0x10013167
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 3
test eax, eax
je 0x1001314c
mov ecx, eax
call fcn.100074e2
jmp 0x1001314e
xor eax, eax
fld dword [0x101f6b88]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xe], 0x10
je 0x100131a6
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 4
test eax, eax
je 0x1001318b
mov ecx, eax
call fcn.100074e2
jmp 0x1001318d
xor eax, eax
fld dword [0x101f6b84]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xe], 0x20
je 0x100131e5
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 5
test eax, eax
je 0x100131ca
mov ecx, eax
call fcn.100074e2
jmp 0x100131cc
xor eax, eax
fld dword [0x101f6b80]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xe], 0x40
je 0x10013224
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 6
test eax, eax
je 0x10013209
mov ecx, eax
call fcn.100074e2
jmp 0x1001320b
xor eax, eax
fld dword [0x101f6b7c]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xe], 0x80
je 0x10013263
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 7
test eax, eax
je 0x10013248
mov ecx, eax
call fcn.100074e2
jmp 0x1001324a
xor eax, eax
fld dword [0x101f6b78]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xf], 1
je 0x100132a2
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 8
test eax, eax
je 0x10013287
mov ecx, eax
call fcn.100074e2
jmp 0x10013289
xor eax, eax
fld dword [0x101f6b74]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xf], 2
je 0x100132e1
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 9
test eax, eax
je 0x100132c6
mov ecx, eax
call fcn.100074e2
jmp 0x100132c8
xor eax, eax
fld dword [0x101f6b70]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xf], 4
je 0x10013320
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 0xa
test eax, eax
je 0x10013305
mov ecx, eax
call fcn.100074e2
jmp 0x10013307
xor eax, eax
fld dword [0x101f6b6c]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xf], 8
je 0x1001335f
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 0xb
test eax, eax
je 0x10013344
mov ecx, eax
call fcn.100074e2
jmp 0x10013346
xor eax, eax
fld dword [0x101f6b68]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xf], 0x10
je 0x1001339a
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], ebx
test eax, eax
je 0x1001337f
mov ecx, eax
call fcn.100074e2
jmp 0x10013381
xor eax, eax
fld dword [0x101f6b64]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xf], 0x20
je 0x100133d9
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 0xd
test eax, eax
je 0x100133be
mov ecx, eax
call fcn.100074e2
jmp 0x100133c0
xor eax, eax
fld dword [0x101f6b60]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
test byte [edi + 0xf], 0x40
je 0x10013418
push ebx
call fcn.1003ddbb
pop ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 0xe
test eax, eax
je 0x100133fd
mov ecx, eax
call fcn.100074e2
jmp 0x100133ff
xor eax, eax
fld dword [0x101f6b5c]
or dword [ebp - 4], 0xffffffff
fstp dword [eax + 4]
mov ecx, dword [esi + 0x33c]
push eax
call fcn.1000d08f
movzx eax, byte [edi + 0x10]
mov ecx, dword [esi + 0x334]
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
fmul dword [ebp - 0x14]
fstp dword [ebp - 0x18]
cmp ecx, 0x190
je 0x100134a8
cmp ecx, 0x215
je 0x10013492
cmp ecx, 0x29b
je 0x10013470
cmp ecx, 0x320
jne 0x100134cc
cmp eax, 0x50
je 0x100134a1
cmp eax, 0x5a
je 0x10013469
cmp eax, 0x64
je 0x10013484
cmp eax, 0x6e
jne 0x100134cc
push 0x10177e14
jmp 0x100134be
push 0x10177e10
jmp 0x100134be
cmp eax, 0x54
je 0x1001348b
cmp eax, 0x60
je 0x100134a1
cmp eax, 0x6c
je 0x10013469
cmp eax, 0x78
jne 0x100134cc
push 0x10177e0c
jmp 0x100134be
push 0x10177e08
jmp 0x100134be
cmp eax, 0x5a
je 0x100134b2
cmp eax, 0x69
je 0x1001348b
cmp eax, 0x78
jne 0x100134cc
push 0x10177e04
jmp 0x100134be
cmp eax, 0x64
je 0x100134b9
cmp eax, 0x78
jne 0x100134cc
push str.EGFJHK
jmp 0x100134be
push 0x10176544
lea eax, [esi + 0x40]
push 0x20
push eax
call fcn.1013b3b0
add esp, 0xc
mov eax, dword [esi + 0x33c]
and dword [ebp - 0x1c], 0
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x20], eax
call fcn.100079d8
jmp 0x10013527
fldz
fcomp dword [ecx + 4]
fnstsw ax
test ah, 5
jp 0x1001351f
fld dword [ebp - 0x18]
fdiv dword [ecx + 4]
fstp dword [ebp - 0x10]
fld dword [ebp - 0x10]
fdivr qword [0x101f6bc0]
fstp dword [ebp - 0x10]
fld dword [ebp - 0x10]
fstp dword [ecx + 8]
fld dword [ebp - 0x10]
fld dword [ebp + 8]
fcompp
fnstsw ax
test ah, 5
jp 0x1001351f
fld dword [ebp + 8]
fstp dword [ecx + 8]
lea ecx, [ebp - 0x20]
call fcn.100178a9
mov ecx, eax
test ecx, ecx
jne 0x100134e3
movzx eax, byte [edi + 0x12]
mov dword [ebp + 8], eax
fild dword [ebp + 8]
fld dword [ebp - 0x14]
fld st(0)
fmulp st(2)
fxch st(1)
fstp dword [esi + 0x340]
movzx eax, byte [edi + 0x13]
mov dword [ebp + 8], eax
fild dword [ebp + 8]
fld st(1)
fmulp st(1)
fstp dword [esi + 0x344]
movzx eax, byte [edi + 0x14]
mov dword [ebp + 8], eax
fild dword [ebp + 8]
fld st(1)
fmulp st(1)
fstp dword [esi + 0x348]
movzx eax, byte [edi + 0x15]
movzx ecx, byte [edi + 0x16]
and eax, 0xf
shl eax, 8
add eax, ecx
mov dword [ebp + 8], eax
fild dword [ebp + 8]
fld st(1)
fmulp st(1)
fstp dword [esi + 0x34c]
movzx eax, byte [edi + 0x15]
movzx ecx, byte [edi + 0x17]
shr eax, 4
shl eax, 8
add eax, ecx
mov dword [ebp + 8], eax
fimul dword [ebp + 8]
fstp dword [esi + 0x350]
movzx eax, byte [edi + 0x3c]
and eax, 0x1f
mov dword [esi + 0x310], eax
movzx ebx, byte [edi + 0x75]
and ebx, 0x7f
cmp ebx, 0xf
jle 0x100135c6
push 0xf
pop ebx
xor eax, eax
test ebx, ebx
jle 0x100135dd
push ebx
lea eax, [esi + 0x60]
push 0x7f
push eax
call fcn.1003f7d0
add esp, 0xc
mov eax, ebx
mov cl, byte [edi + 0x76]
mov byte [eax + esi + 0x60], cl
lea eax, [esi + 0xa0]
push eax
lea eax, [esi + 0x60]
push eax
call fcn.1000a899
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 + 0x368], al
mov cl, byte [edi + 0x79]
mov al, cl
shr al, 4
imul dl
and cl, 0xf
add al, cl
mov byte [esi + 0x369], al
movzx eax, byte [edi + 0x7a]
movzx ecx, byte [edi + 0x7b]
shl eax, 8
add eax, ecx
movzx ecx, byte [edi + 0x7c]
shl eax, 8
add eax, ecx
movzx ecx, byte [edi + 0x7d]
shl eax, 8
add eax, ecx
push eax
push 0x101765c0
mov dword [esi + 0x2e4], eax
lea eax, [esi + 0x2c0]
push 0x20
push eax
call fcn.1013b440
add esp, 0x18
lea ecx, [esi + 0x2a0]
lea eax, [edi + 0x80]
mov dword [ebp + 8], 0x12
mov dl, byte [eax]
cmp dl, 0xff
sete bl
dec bl
and bl, dl
inc eax
mov byte [ecx], bl
inc ecx
dec dword [ebp + 8]
jne 0x1001366f
mov byte [esi + 0x2b2], 0
movzx ebx, byte [edi + 0x94]
and ebx, 0x7f
cmp ebx, 0xf
jle 0x1001369d
push 0xf
pop ebx
xor eax, eax
test ebx, ebx
jle 0x100136b7
push ebx
lea eax, [esi + 0x80]
push 0x7f
push eax
call fcn.1003f7d0
add esp, 0xc
mov eax, ebx
mov cl, byte [edi + 0x95]
mov byte [eax + esi + 0x80], cl
lea eax, [esi + 0x1a0]
push eax
sub esi, 0xffffff80
push esi
call fcn.1000a899
pop ecx
pop ecx
call fcn.1003f7aa
ret 4