Function at 0xd58c16
Capabilities:
Encrypt data using rc4 prga
Parse pe header
Resolve function by parsing pe exports

Disassembly:
mov cl, byte [esi + 2]
lea esi, [esi + 2]
cmc
sub edx, edx
test cl, cl
je 0xac8996
mov al, cl
test cx, sp
cmc
sub al, 0x30
inc esi
cmc
cmp al, 9
ja 0xac8996
movsx eax, cl
shr cl, 0x84
shl cl, cl
mov cl, byte [esi]
test esi, 0x5cd94859
stc
lea edx, [edx + edx*4]
lea edx, [eax + edx*2 - 0x30]
test cl, cl
jne 0xac8964
push 0
push edx
push edi
call fcn.00d58c16
add esp, 0xc
pop esi
mov bx, 0x5071
pop ebx
mov di, di
pop edi
mov esp, ebp
mov bp, 0xc9b
not ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
cmove dx, cx
movzx dx, bh
movsx eax, si
mov edx, dword [ecx + edi + 0x24]
cmovge cx, bp
cwde
lea eax, [edx + esi*2]
movzx ecx, word [eax + edi]
lea edx, [ebx + 1]
mov dword [ebp - 8], ecx
mov dword [ebp + 8], edx
jmp 0xe00af2
pop esi
movzx eax, sp
mov al, 0x61
not eax
pop ebx
lea eax, [ecx + edi]
pop edi
mov esp, ebp
cmovns bp, bp
xchg ebp, ebp
pop ebp
ret
mov edx, dword [edi + 0x3c]
test si, 0x4cad
cmp di, 0x6f5
cmp esp, edi
lea edx, [edx + edi]
cmp si, cx
cmp dword [edx], 0x4550
jne 0xd58c5e
mov eax, dword [edx + 0x78]
cmp bx, 0x2e86
mov dword [ebp - 4], eax
cmp ah, bh
test eax, eax
je 0xd58c5e
mov edx, dword [edx + 0x7c]
test cl, 0xfb
test cx, bp
push ebx
stc
push esi
cmp bl, 0xe6
clc
cmc
or esi, 0xffffffff
stc
clc
mov dword [ebp - 0x10], edx
mov dword [ebp - 8], esi
test cl, 0x1d
cmp ecx, 0xffff
ja 0xe6e8e8
sub ecx, dword [eax + edi + 0x10]
cmp ecx, dword [eax + edi + 0x14]
jae 0xe00b79
mov edx, dword [eax + edi + 0x1c]
cmp eax, ecx
clc
lea ecx, [edx + ecx*4]
mov ecx, dword [ecx + edi]
cmp ch, bl
test ecx, ecx
jne 0xe00b2b
pop esi
xchg bl, bl
pop ebx
add di, di
sub eax, eax
movsx edi, dx
pop edi
mov esp, ebp
xchg bp, bp
pop ebp
ret
push ebp
mov ebp, esp
lea esp, [esp - 0x114]
push edi
shr edi, 0x29
and di, 0x150e
test ebp, 0x62ad515f
mov edi, dword [ebp + 8]
stc
test esi, ebp
test edi, edi
je 0xd58c5e
mov ecx, dword [ebp + 0xc]
clc
test ecx, ecx
je 0xd58c5e
mov eax, 0x5a4d
cmp esp, 0x79142d2e
clc
cmp word [edi], ax
je 0xd55454
xor eax, eax
pop edi
mov esp, ebp
pop ebp
ret
mov ebx, esi
cmp esi, 0x7d6772a3
cmp al, dl
sub ebx, eax
cmp ebx, 0x104
jae 0xe00b79
xor ecx, ecx
cmc
test ebx, ebx
jbe 0xd65f2b
lea edi, [ebp - 0x114]
xor dl, 0xfd
sub edi, eax
shl dl, 0xbf
inc dl
mov dl, byte [eax]
cmc
test dl, dl
je 0xd65f2b
mov byte [edi + eax], dl
inc ecx
inc eax
cmp bx, ax
test di, si
cmp ecx, ebx
jb 0xd65f0d
lea eax, [ebp - 0x114]
push eax
not ah
bswap ax
mov byte [ebp + ecx - 0x114], 0
mov ah, 0x30
mov eax, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call eax
mov edi, eax
test edi, edi
jne 0xd65f6c
lea ecx, [ebp - 0x114]
push ecx
lahf
mov eax, dword [sym.imp.KERNEL32.dll_LoadLibraryA_1]
call eax
mov edi, eax
test edi, edi
je 0xe00b79
cmp byte [esi + 1], 0x23
not ch
setl cl
lea ecx, [esi + 1]
je 0xac8953
push 0
push ecx
push edi
call fcn.00d58c16
add esp, 0xc
pop esi
setbe bl
not bx
pop ebx
pop edi
mov esp, ebp
pop ebp
ret
lea ebx, [esi - 1]
cmp dword [ebp + 8], ebx
jle 0xe01ac2
mov eax, dword [ebp - 4]
inc esi
test ebp, edi
and si, 0x5475
mov esi, dword [ebp - 8]
cmp bp, si
stc
cmp esi, dword [eax + edi + 0x14]
jae 0xe00b79
mov ecx, dword [eax + edi + 0x1c]
lea edx, [ecx + esi*4]
mov ecx, dword [edx + edi]
test ebx, esp
test ecx, ecx
je 0xe00b79
cmp ecx, eax
jb 0xd5387a
mov edx, dword [ebp - 0x10]
add edx, eax
stc
cmp ecx, edx
jae 0xd5387a
lea eax, [ecx + edi]
sal si, 0xbc
mov cl, byte [eax]
rcl esi, 0xb3
btr esi, 0xf7
mov esi, eax
test si, si
clc
cmc
test cl, cl
je 0xe00b79
mov edi, edi
cmc
cmp cl, 0x2e
je 0xd65eda
mov cl, byte [esi + 1]
inc esi
clc
test cl, cl
jne 0xe00b63
pop esi
sub edi, eax
or edi, eax
pop ebx
movzx edi, si
cmp ah, cl
and di, 0x2dda
sub eax, eax
mov di, 0x1a0c
pop edi
mov esp, ebp
bswap ebp
pop ebp
ret
mov ecx, dword [ebp + 0xc]
cmovb edx, ecx
rcl al, 0xc6
mov edx, dword [ebp - 0xc]
sal ax, 0x21
mov eax, dword [ebp + 8]
lea esi, [ebx + eax]
ror al, cl
mov eax, dword [ebp + 0x10]
push eax
shr al, cl
sar esi, 1
movsx eax, dx
test bh, ch
rcr eax, cl
mov eax, dword [edx + esi*4]
add eax, edi
call fcn.00aca4e3
lea esp, [esp + 4]
test eax, eax
clc
test dl, 0xaa
cmp eax, 0xffffffff
je 0xe00aef
test eax, eax
je 0xd5381b
cmp eax, 1
jne 0xe00af2
inc esi
mov dword [ebp + 8], esi
jmp 0xe00af2
mov ebx, dword [eax + edi + 0x18]
test ebx, ebx
je 0xe00b0d
mov edx, dword [eax + edi + 0x20]
dec ebx
clc
add edx, edi
test esp, 0x7df73fe3
stc
mov dword [ebp + 8], 0
mov dword [ebp - 0xc], edx
cmp ecx, ebp
test ebx, ebx
jl 0xe00b0d
jmp 0xe01ad2