Function at 0x4043a0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push 0xffffffffffffffff
push 0x4ad951
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3d8
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x40], esi
push str.ABCDEFGHIJKLMNOPQRSTUVWXYZ
lea ecx, [esp + 0x3fc]
mov dword [esp + 0x3f4], 0
call fcn.00493a4c
cmp eax, 0xffffffff
jne 0x4046c4
mov eax, dword [0x4dca08]
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x3f8]
mov byte [esp + 0x3f0], 1
mov eax, dword [ecx - 8]
test eax, eax
je 0x4046ae
mov ebp, 0x100
jmp 0x404418
mov esi, dword [esp + 0x40]
lea edx, [esp + 0x38]
push 0x4d36f4
push edx
lea ecx, [esp + 0x400]
call fcn.00490a9e
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x3f4], 2
call fcn.00493683
lea ecx, [esp + 0x38]
mov byte [esp + 0x3f0], 1
call fcn.0049354a
mov eax, dword [esp + 0x10]
push eax
call fcn.0047edbd
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x3fc]
mov byte [esp + 0x2c], al
add esp, 4
mov eax, dword [ecx - 8]
mov ecx, dword [edx - 8]
lea edx, [eax + 1]
cmp edx, ecx
jge 0x40447d
lea ecx, [eax + 1]
push ecx
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
lea eax, [esp + 0x34]
push 0x4d36f4
push eax
lea ecx, [esp + 0x400]
call fcn.00490a9e
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x3f4], 3
call fcn.00493683
lea ecx, [esp + 0x34]
mov byte [esp + 0x3f0], 1
call fcn.0049354a
mov ecx, dword [esp + 0x10]
push ecx
call fcn.0047edbd
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x3fc]
mov byte [esp + 0x20], al
add esp, 4
mov eax, dword [edx - 8]
mov ecx, dword [ecx - 8]
lea edx, [eax + 1]
cmp edx, ecx
jge 0x4044f1
lea ecx, [eax + 1]
push ecx
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
lea eax, [esp + 0x2c]
push 0x4d36f4
push eax
lea ecx, [esp + 0x400]
call fcn.00490a9e
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x3f4], 4
call fcn.00493683
lea ecx, [esp + 0x2c]
mov byte [esp + 0x3f0], 1
call fcn.0049354a
mov ecx, dword [esp + 0x10]
push ecx
call fcn.0047edbd
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x3fc]
mov byte [esp + 0x1c], al
add esp, 4
mov eax, dword [edx - 8]
mov ecx, dword [ecx - 8]
lea edx, [eax + 1]
cmp edx, ecx
jge 0x404565
lea ecx, [eax + 1]
push ecx
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
lea eax, [esp + 0x30]
push 0x4d36f4
push eax
lea ecx, [esp + 0x400]
call fcn.00490a9e
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x3f4], 5
call fcn.00493683
lea ecx, [esp + 0x30]
mov byte [esp + 0x3f0], 1
call fcn.0049354a
mov ecx, dword [esp + 0x10]
push ecx
call fcn.0047edbd
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x3fc]
mov byte [esp + 0x18], al
add esp, 4
mov eax, dword [edx - 8]
mov ecx, dword [ecx - 8]
lea edx, [eax + 1]
cmp edx, ecx
jge 0x4045d9
lea ecx, [eax + 1]
push ecx
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
and ecx, 0xff
shl ecx, 8
and eax, 0xff
and edx, 0xff
add ecx, eax
mov eax, dword [esp + 0x14]
shl ecx, 8
mov ebx, dword [esi + 4]
add ecx, edx
shl ecx, 8
and eax, 0xff
xor edx, edx
add ecx, eax
mov eax, ecx
shr eax, 4
div dword [ebx + 0x1c84]
mov eax, dword [ebx + 0x1c80]
test eax, eax
je 0x40469c
mov eax, dword [eax + edx*4]
test eax, eax
je 0x40469c
cmp dword [eax + 8], ecx
je 0x40464b
mov eax, dword [eax]
test eax, eax
jne 0x40463e
jmp 0x40469c
test eax, eax
je 0x40469c
lea esi, [eax + 0xc]
mov ecx, 0x29
lea edi, [esp + 0x44]
rep movsd dword es:[edi], dword [esi]
test dword [esp + 0x90], ebp
jne 0x40469c
mov cl, byte [esp + 0x44]
mov dl, byte [esp + 0x45]
mov al, byte [esp + 0x46]
mov byte [esp + 0x20], cl
mov cl, byte [esp + 0x47]
mov byte [esp + 0x23], dl
lea edx, [esp + 0x20]
mov byte [esp + 0x25], cl
push edx
mov ecx, ebx
mov byte [esp + 0x25], 0x90
mov byte [esp + 0x26], 3
mov byte [esp + 0x28], al
call fcn.00424590
mov eax, dword [esp + 0x3f8]
mov ecx, dword [eax - 8]
test ecx, ecx
jne 0x404414
lea ecx, [esp + 0x10]
mov byte [esp + 0x3f0], 0
call fcn.0049354a
jmp 0x404d65
push 0x3b
lea ecx, [esp + 0x3fc]
mov byte [esp + 0x20], 0
mov byte [esp + 0x14], 0
mov byte [esp + 0x2c], 0
call fcn.00493a11
cmp eax, 0xffffffff
jne 0x404709
mov cl, byte [esi + 0x10]
mov dl, byte [esi + 0x11]
mov byte [esp + 0x1e8], cl
mov byte [esp + 0x1c], 1
mov byte [esp + 0xe8], dl
mov byte [esp + 0x10], 1
jmp 0x404b08
mov eax, dword [esp + 0x3f8]
mov al, byte [eax]
cmp al, 0x3b
je 0x404af8
movsx eax, al
add eax, 0xffffffbe
cmp eax, 0x16
ja case.0x404731.70
xor ecx, ecx
mov cl, byte [eax + 0x404db0]
jmp dword [ecx*4 + 0x404d9c]
push 2
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
lea edx, [esp + 0x14]
push str.0123456789___
push edx
lea ecx, [esp + 0x400]
call fcn.00490a9e
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x3f8]
mov byte [esp + 0x3f0], 6
mov eax, dword [eax - 8]
push eax
push 0
call fcn.00490915
push 0x4d3744
lea ecx, [esp + 0x18]
call fcn.00490ac9
cmp eax, 0xffffffff
jne 0x40482e
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx - 8]
test eax, eax
je 0x4048bf
lea edx, [esp + 0x30]
push 0x4d36f4
push edx
lea ecx, [esp + 0x1c]
call fcn.00490a9e
mov eax, dword [esp + 0x30]
mov byte [esp + 0x3f0], 7
push eax
call fcn.0047edbd
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
mov bl, byte [esp + 0x14]
and ecx, 0xff
add esp, 4
inc bl
mov byte [esp + ecx + 0xe8], al
mov eax, dword [edx - 8]
mov ecx, dword [esp + 0x14]
mov byte [esp + 0x10], bl
lea edx, [eax + 1]
mov ecx, dword [ecx - 8]
cmp edx, ecx
jge 0x4047fd
lea ecx, [eax + 1]
push ecx
push 0
lea ecx, [esp + 0x1c]
call fcn.00490915
lea ecx, [esp + 0x30]
mov byte [esp + 0x3f0], 6
call fcn.0049354a
mov eax, dword [esp + 0x14]
mov ecx, dword [eax - 8]
test ecx, ecx
jne 0x4047a2
jmp 0x4048bf
lea ecx, [esp + 0x2c]
push 0x4d36f4
push ecx
lea ecx, [esp + 0x1c]
call fcn.00490a9e
mov edx, dword [esp + 0x2c]
mov byte [esp + 0x3f0], 8
push edx
call fcn.0047edbd
mov ecx, dword [esp + 0x18]
mov bl, al
mov eax, dword [esp + 0x30]
add esp, 4
mov ecx, dword [ecx - 8]
mov eax, dword [eax - 8]
lea edx, [eax + 2]
cmp edx, ecx
jge 0x404870
lea ecx, [eax + 2]
push ecx
push 0
lea ecx, [esp + 0x1c]
call fcn.00490915
mov eax, dword [esp + 0x14]
push eax
call fcn.0047edbd
add esp, 4
cmp bl, al
ja 0x4048ae
mov ecx, dword [esp + 0x10]
and ecx, 0xff
mov byte [esp + ecx + 0xe8], bl
mov cl, byte [esp + 0x10]
inc cl
inc bl
cmp bl, al
mov byte [esp + 0x10], cl
jbe 0x40488d
lea ecx, [esp + 0x2c]
mov byte [esp + 0x3f0], 6
call fcn.0049354a
lea ecx, [esp + 0x14]
mov byte [esp + 0x3f0], 0
call fcn.0049354a
jmp 0x404ae7
push 2
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
lea edx, [esp + 0x18]
push str.0123456789___
push edx
lea ecx, [esp + 0x400]
call fcn.00490a9e
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x3f8]
mov byte [esp + 0x3f0], 9
mov eax, dword [eax - 8]
push eax
push 0
call fcn.00490915
push 0x4d3744
lea ecx, [esp + 0x1c]
call fcn.00490ac9
cmp eax, 0xffffffff
jne 0x4049cb
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx - 8]
test eax, eax
je 0x404a5c
lea edx, [esp + 0x34]
push 0x4d36f4
push edx
lea ecx, [esp + 0x20]
call fcn.00490a9e
mov eax, dword [esp + 0x34]
mov byte [esp + 0x3f0], 0xa
push eax
call fcn.0047edbd
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
mov bl, byte [esp + 0x20]
and ecx, 0xff
add esp, 4
inc bl
mov byte [esp + ecx + 0x1e8], al
mov eax, dword [edx - 8]
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x1c], bl
lea edx, [eax + 1]
mov ecx, dword [ecx - 8]
cmp edx, ecx
jge 0x40499a
lea ecx, [eax + 1]
push ecx
push 0
lea ecx, [esp + 0x20]
call fcn.00490915
lea ecx, [esp + 0x34]
mov byte [esp + 0x3f0], 9
call fcn.0049354a
mov eax, dword [esp + 0x18]
mov ecx, dword [eax - 8]
test ecx, ecx
jne 0x40493f
jmp 0x404a5c
lea ecx, [esp + 0x38]
push 0x4d36f4
push ecx
lea ecx, [esp + 0x20]
call fcn.00490a9e
mov edx, dword [esp + 0x38]
mov byte [esp + 0x3f0], 0xb
push edx
call fcn.0047edbd
mov ecx, dword [esp + 0x1c]
mov bl, al
mov eax, dword [esp + 0x3c]
add esp, 4
mov ecx, dword [ecx - 8]
mov eax, dword [eax - 8]
lea edx, [eax + 2]
cmp edx, ecx
jge 0x404a0d
lea ecx, [eax + 2]
push ecx
push 0
lea ecx, [esp + 0x20]
call fcn.00490915
mov eax, dword [esp + 0x18]
push eax
call fcn.0047edbd
add esp, 4
cmp bl, al
ja 0x404a4b
mov ecx, dword [esp + 0x1c]
and ecx, 0xff
mov byte [esp + ecx + 0x1e8], bl
mov cl, byte [esp + 0x1c]
inc cl
inc bl
cmp bl, al
mov byte [esp + 0x1c], cl
jbe 0x404a2a
lea ecx, [esp + 0x38]
mov byte [esp + 0x3f0], 9
call fcn.0049354a
lea ecx, [esp + 0x18]
mov byte [esp + 0x3f0], 0
call fcn.0049354a
jmp 0x404ae7
mov al, byte [esi + 0x11]
test al, al
je 0x404a95
mov ecx, dword [esp + 0x10]
mov dl, al
and ecx, 0xff
dec dl
mov byte [esp + ecx + 0xe8], dl
mov cl, byte [esp + 0x10]
inc cl
mov byte [esp + 0x10], cl
cmp al, 0x63
je case.0x404731.66
mov edx, dword [esp + 0x10]
inc al
and edx, 0xff
mov byte [esp + edx + 0xe8], al
mov al, byte [esp + 0x10]
inc al
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x10]
mov dl, byte [esp + 0x10]
mov cl, byte [esi + 0x11]
and eax, 0xff
inc dl
push 2
mov byte [esp + eax + 0xec], cl
mov byte [esp + 0x14], dl
jmp 0x404ad9
push 1
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
mov edx, dword [esp + 0x3f8]
mov al, byte [edx]
cmp al, 0x3b
jne 0x40471a
push 1
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
mov eax, dword [esp + 0x3f8]
mov ecx, dword [eax - 8]
test ecx, ecx
je 0x404c25
mov bl, byte [esp + 0x3f]
mov cl, byte [eax]
mov al, byte [eax + 1]
movsx ecx, cl
movsx edx, al
shl ecx, 8
lea eax, [ecx + edx]
cmp eax, 0x4c44
jg 0x404b9e
je 0x404b9a
cmp eax, 0x4742
jg 0x404b7b
je 0x404b77
cmp eax, 0x464a
jg 0x404b6c
je 0x404b68
sub eax, 0x4443
je 0x404b61
sub eax, 0x11
jne 0x404be9
mov bl, 0x1f
jmp 0x404be9
mov bl, 0x12
jmp 0x404be9
mov bl, 0x1d
jmp 0x404be9
cmp eax, 0x4650
jne 0x404be9
mov bl, 0x1b
jmp 0x404be9
mov bl, 0x10
jmp 0x404be9
sub eax, 0x4a47
je 0x404b96
sub eax, 5
je 0x404b92
sub eax, 0xf8
jne 0x404be9
mov bl, 0x17
jmp 0x404be9
mov bl, 0x16
jmp 0x404be9
mov bl, 0x13
jmp 0x404be9
mov bl, 0x11
jmp 0x404be9
cmp eax, 0x5846
jg 0x404bcc
je 0x404bc8
cmp eax, 0x4c50
je 0x404bc4
cmp eax, 0x5059
je 0x404bc0
cmp eax, 0x5346
jne 0x404be9
mov bl, 0x14
jmp 0x404be9
mov bl, 0x15
jmp 0x404be9
mov bl, 0x1c
jmp 0x404be9
mov bl, 0x1a
jmp 0x404be9
sub eax, 0x594a
je 0x404be7
sub eax, 0xfa
je 0x404be3
sub eax, 9
jne 0x404be9
mov bl, 0x18
jmp 0x404be9
mov bl, 0x19
jmp 0x404be9
mov bl, 0x1e
push 3
push 0
lea ecx, [esp + 0x400]
call fcn.00490915
mov eax, dword [esp + 0x28]
mov dl, byte [esp + 0x28]
and eax, 0xff
inc dl
mov byte [esp + 0x28], dl
mov byte [esp + eax + 0x2e8], bl
mov eax, dword [esp + 0x3f8]
mov ecx, dword [eax - 8]
test ecx, ecx
jne 0x404b1e
mov ebx, dword [esi + 4]
add ebx, 0x1c7c
mov ebp, dword [ebx + 0xc]
neg ebp
sbb ebp, ebp
test ebp, ebp
je 0x404d65
cmp ebp, 0xffffffff
mov edx, ebp
jne 0x404c5e
mov esi, dword [ebx + 8]
xor eax, eax
test esi, esi
jbe 0x404c5e
mov ecx, dword [ebx + 4]
mov edx, dword [ecx]
test edx, edx
jne 0x404c5e
inc eax
add ecx, 4
cmp eax, esi
jb 0x404c50
mov ebp, dword [edx]
test ebp, ebp
jne 0x404c83
mov eax, dword [edx + 4]
mov esi, dword [ebx + 8]
inc eax
cmp eax, esi
jae 0x404c83
mov ecx, dword [ebx + 4]
lea ecx, [ecx + eax*4]
mov ebp, dword [ecx]
test ebp, ebp
jne 0x404c83
inc eax
add ecx, 4
cmp eax, esi
jb 0x404c75
lea esi, [edx + 0xc]
mov ecx, 0x29
lea edi, [esp + 0x44]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x90]
test ah, 1
jne 0x404d5d
mov ecx, dword [esp + 0x28]
xor eax, eax
and ecx, 0xff
jle 0x404d5d
mov esi, dword [esp + 0x54]
xor edx, edx
mov dl, byte [esp + eax + 0x2e8]
cmp edx, esi
je 0x404cce
inc eax
cmp eax, ecx
jl 0x404cb7
jmp 0x404d5d
mov al, byte [esp + 0x1c]
test al, al
je 0x404cf8
mov ecx, dword [esp + 0x1c]
xor eax, eax
and ecx, 0xff
jle 0x404d5d
mov dl, byte [esp + 0x4c]
cmp byte [esp + eax + 0x1e8], dl
je 0x404cf8
inc eax
cmp eax, ecx
jl 0x404ce8
jmp 0x404d5d
mov al, byte [esp + 0x10]
test al, al
je 0x404d22
mov ecx, dword [esp + 0x10]
xor eax, eax
and ecx, 0xff
jle 0x404d5d
mov dl, byte [esp + 0x4d]
cmp byte [esp + eax + 0xe8], dl
je 0x404d22
inc eax
cmp eax, ecx
jl 0x404d12
jmp 0x404d5d
mov cl, byte [esp + 0x45]
mov dl, byte [esp + 0x46]
mov al, byte [esp + 0x44]
mov byte [esp + 0x23], cl
mov byte [esp + 0x24], dl
mov edx, dword [esp + 0x40]
lea ecx, [esp + 0x20]
mov byte [esp + 0x20], al
mov al, byte [esp + 0x47]
push ecx
mov ecx, dword [edx + 4]
mov byte [esp + 0x25], 0x90
mov byte [esp + 0x26], 3
mov byte [esp + 0x29], al
call fcn.00424590
test ebp, ebp
jne 0x404c3d
lea ecx, [esp + 0x3f8]
mov dword [esp + 0x3f0], 0xffffffff
call fcn.0049354a
mov ecx, dword [esp + 0x3e8]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x3e4
ret 4