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

Disassembly:
lea eax, [esi + 2]
xor ebx, ebx
mov dword [esp + 0x5c], eax
mov word [eax], bx
lea eax, [edx*2 + 4]
mov dword [esp + 0x54], eax
add esi, eax
mov eax, dword [edi + 0x40]
push 0x7c
mov dword [esp + 0x38], eax
mov dword [esp + 0x5c], eax
pop edx
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x18], esi
jne 0x40779a
cmp dword [ebp + 0x10], 0
jne 0x482507
mov ebx, dword [ebp + 0x38]
mov eax, ebx
neg eax
sbb eax, eax
lea ecx, [esp + 0xc]
and eax, ecx
push eax
push edi
push dword [ebp + 0x1c]
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0x34]
and al, 0x34
push eax
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x58]
push eax
push dword [ebp + 0xc]
lea eax, [esp + 0x44]
push eax
lea edx, [esp + 0x40]
lea ecx, [esp + 0x68]
call fcn.004077b0
add esp, 0x28
test eax, eax
je 0x48258a
mov eax, dword [esp + 0x34]
cmp dword [edi + 0x40], eax
ja 0x4076ba
mov esi, dword [esp + 0x18]
test ebx, ebx
jne 0x4075b9
mov eax, dword [esp + 0x14]
push 0x77
pop ecx
cmp word [eax], cx
je 0x4076f1
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], ecx
cmp dword [ebp + 0x10], 0
jne 0x482529
mov ebx, dword [esp + 0x20]
push 0x7c
pop edx
cmp word [ebx], dx
je 0x4076c6
cmp dword [ebp + 0x38], 0
jne 0x4075f1
mov edi, dword [esp + 0x14]
mov edx, esi
sub edx, edi
sar edx, 1
movzx ecx, word [edi + 2]
mov eax, ecx
neg eax
mov word [edi + 2], dx
mov edx, ecx
lea edi, [edi + eax*2]
test ecx, ecx
jg 0x4075d9
mov edi, dword [ebp + 0x34]
mov ecx, dword [esp + 0x4c]
push 0x78
pop eax
mov word [esi], ax
mov eax, esi
sub eax, ecx
sar eax, 1
mov word [esi + 2], ax
add esi, 4
cmp dword [esp + 0x48], 0
jg 0x40769a
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
mov dword [edi + 0x40], eax
mov eax, dword [esp + 0x50]
mov dword [eax], esi
mov eax, dword [ebp + 8]
mov dword [eax], ebx
mov eax, dword [ebp + 0x20]
mov ebx, dword [esp + 0x10]
mov dword [eax], edx
mov eax, dword [ebp + 0x24]
mov edx, dword [esp + 0x30]
mov dword [eax], edx
mov eax, dword [ebp + 0x28]
mov edx, dword [esp + 0x1c]
mov dword [eax], edx
mov eax, dword [ebp + 0x2c]
mov dword [eax], ebx
mov ebx, dword [ebp + 0x38]
test ebx, ebx
je 0x407669
mov edx, dword [ebx]
mov eax, 0x7fffffeb
sub eax, edx
cmp eax, ecx
jl 0x4825e3
add ecx, edx
mov dword [ebx], ecx
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
and al, 0x60
mov dword [esp + 0x48], ebx
mov word [esp + 0x64], bx
mov dword [edi + 0x24], eax
jmp 0x4074de
mov eax, dword [edi + 0x24]
xor edx, edx
cmp word [eax + 6], dx
jne 0x48259a
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x24]
mov eax, dword [eax]
mov dword [edi + 0x24], eax
jmp 0x407617
mov eax, dword [edi + 0x40]
mov dword [esp + 0x34], eax
jmp 0x407577
cmp dword [ebp + 0x38], 0
cmp byte [eax], al
mov ecx, dword [esp + 0xc]
je 0x407734
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
add esi, dword [esp + 0x54]
add ecx, 2
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x58]
add ebx, 2
mov dword [esp + 0x20], ebx
jmp 0x407505
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
test ecx, ecx
jns 0x407753
test eax, eax
js 0x407761
mov ecx, dword [esp + 0x24]
test ecx, ecx
jns 0x407765
mov ecx, eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], ecx
mov ebx, dword [esp + 0x10]
mov eax, ecx
xor eax, ebx
test eax, 0xfffffffd
je 0x407788
or dword [esp + 0x10], 0xffffffff
mov eax, dword [esp + 0x14]
jmp 0x4075af
push 0x77
pop eax
mov word [esi], ax
mov eax, esi
sub eax, dword [esp + 0x14]
mov dword [esp + 0x14], esi
sar eax, 1
mov word [esi + 2], ax
mov dword [esp + 0x6c], esi
add esi, 4
jmp 0x4076e1
cmp dword [esp + 0x2c], edx
jne 0x40776b
cmp ecx, eax
jne 0x40776b
test ecx, ecx
js 0x407701
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
jmp 0x407717
mov ebx, dword [esp + 0x10]
test ebx, ebx
jns 0x40777f
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], ecx
or ecx, 0xffffffff
mov dword [esp + 0x30], ecx
jmp 0x40775d
cmp dword [esp + 0x1c], edx
jne 0x407726
or ebx, ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], ebx
jmp 0x40772b
mov dword [edi + 0x40], eax
jmp 0x407513
mov dword [ebp - 4], edi
call fcn.00408b14
mov esi, eax
cmp esi, edi
jae case.0x408a2d.119
push 0x77
pop ebx
movzx edi, word [esi]
push 0x10
xor edx, edx
pop ecx
cmp edi, 0x7d
je 0x4825ee
cmp edi, 0x75
je 0x482606
mov eax, 0x92
cmp di, ax
xchg edx, eax
add byte [eax], al
add byte [esi + 0x3b], ah
clc
je 0x4827f2
inc eax
cmp di, ax
je 0x4827f2
mov eax, 0xa1
cmp di, ax
je 0x4827f2
add eax, 0xfffffff3
cmp di, ax
je 0x4827f2
lea eax, [ecx + 0x78]
cmp di, ax
je 0x4827e1
inc eax
cmp di, ax
je 0x4827e1
lea eax, [ecx + 0x7a]
cmp di, ax
je 0x4827e1
inc eax
cmp di, ax
je 0x4827e1
lea eax, [ecx + 0x73]
cmp di, ax
je 0x482784
inc eax
cmp di, ax
je 0x482784
lea eax, [ecx + 0x75]
cmp di, ax
je 0x482784
inc eax
cmp di, ax
je 0x482784
lea eax, [ecx + 0x71]
cmp di, ax
je 0x482784
inc eax
cmp di, ax
je 0x482784
lea eax, [ecx + 0x77]
cmp di, ax
je 0x482784
lea eax, [edi - 6]
cmp eax, 0x95
ja case.0x408a2d.23
movzx eax, byte [eax + 0x408a7e]
jmp dword [eax*4 + 0x408a56]
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
lea ecx, [esi + 0x22]
movzx eax, word [ecx]
add eax, 0xffffff9e
cmp eax, 0xb
ja case.0x408a2d.6
jmp 0x4826da
xor eax, eax
inc eax
jmp 0x408a36
rol byte [eax - 0x15], 0xe3
lea ecx, [ecx]
xor al, 0x8a
inc eax
add byte [edx], ch
daa
dec eax
add byte [edi + 0x48], ch
add bh, dh
dec eax
add byte [edi], bl
dec eax
add byte [ebx], bh
mov al, byte [eax]
int3
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
add al, 7
pop es
pop es
pop es
pop es
add eax, 0x7070707
push es
mov word [esi], dx
add esi, 2
xor eax, eax
mov dword [esp + 0x44], esi
mov word [esi], ax
ror byte [ecx + 0x66442474], 0x89
push es
add esi, 2
add ecx, 2
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], ecx
jmp 0x407538
jne 0x482591
push 0x24
pop eax
jmp 0x4825a0
xor eax, eax
cmp ecx, 0xfffffffc
setne al
dec eax
and eax, 0x2d
add eax, 0x19
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x20]
mov dword [ecx], eax
xor eax, eax
jmp 0x407687
add dword [edx + 0x78], ebp
pop ecx
mov word [esi + 4], cx
mov ecx, dword [esp + 0xc]
mov word [esi + 6], ax
or al, 0x66
mov dword [esi + 6], eax
add esi, 8
add ecx, 4
jmp 0x4076c8
add bl, ch
movsd dword es:[edi], dword [esi]
movzx eax, word [esi + 2]
lea esi, [esi + eax*2]
cmp word [esi], bx
je 0x482609
jmp 0x482619
movzx edi, word [esi]
jmp 0x5e282b
lea eax, [ebp - 0xc]
push eax
push edx
push dword [ebp + 8]
mov edx, dword [ebp - 4]
mov ecx, ebx
call fcn.0040893d
add esp, 0xc
push 0x77
test eax, eax
jne 0x48282a
test dword [ecx + 1], ebx
add byte [eax], al
test dword [ecx + 1], ebx
add byte [eax], al
movzx eax, word [ebx + 2]
lea ebx, [ebx + eax*2]
pop eax
cmp word [ebx], ax
cmp dword [ebx], eax
jne 0x408a4f
mov edx, dword [ebp + 0xc]
jmp 0x4826b2
add byte [edx + 0x28], 0x48
push ss
jmp dword [eax*4 + 0x16482836]
mulps xmm4, xmmword [esi + 0x3b]
shr ebx, 6
push 0xf
pop edx
cmp ax, dx
jne 0x48282b
test esp, edi
add byte [eax], al
invalid
test esp, edi
add byte [eax], al
add byte [ebx - 0xb16fb3a], al
add byte [eax], al
add byte [edi], cl
mov bh, 0x46
add al, 0x6a
adc byte [edx + 0x66], bl
cmp eax, edx
je 0x48272f
add esi, 4
jmp 0x48282b
jmp 0x482723
mov ax, word [esi + 4]
mov ecx, 0x83fc00
add dword [eax], 0x66
and eax, ecx
add dword [eax], 0x66
and eax, ecx
mov ecx, 0x83d800
cmp ax, cx
ror dword [edi], 0x85
lodsb al, byte [esi]
add byte [eax], al
invalid
ror dword [edi], 0x85
lodsb al, byte [esi]
add byte [eax], al
add byte [ebx - 0x5b16fd3a], al
add esi, 2
jmp 0x1648282b
add byte [eax], al
push ss
cmp dword [ebp + 8], 0
je 0x48282b
jmp 0x482765
test edi, edi
jne 0x4827e3
push edx
push dword [ebp + 0xc]
mov edx, dword [ebp - 4]
push dword [ebp + 8]
mov ecx, esi
call fcn.0040893d
add esp, 0xc
test eax, eax
je 0x4827e1
inc edi
xor edx, edx
movzx eax, word [esi + 2]
lea esi, [esi + eax*2]
cmp word [esi], bx
je 0x4827c4
test edi, edi
je 0x408a4f
test byte [eax + 0x62], bl
clc
invalid
jmp 0x482619
pushal
in eax, 0x49
add byte [ebp - 0x48f0b9cc], cl
inc esi
add cl, byte [ebp + 0x39664634]
push ds
movzx eax, word [esi + 2]
lea esi, [esi + eax*2]
cmp word [esi], bx
je 0x482817
jmp 0x482619
pop ebx
movzx eax, di
xor edx, edx
movzx eax, byte [eax + 0x49e560]
inc edx
lea ecx, [esi + eax*2]
call fcn.00408b2f
mov esi, eax
cmp esi, dword [ebp - 4]
jae 0x408a69
jmp 0x40896d