Function at 0x40ffc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xcf0
mov ecx, dword [str.c234bc615b913e9a293cde6ec0383ef1]
mov dword [esp + 0xd0], 0x23e7bbf8
mov dword [esp + 0xd4], 0
mov byte [esp + 0xd8], 0
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x30]
cmp eax, 8
ja 0x410071
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x30]
movzx esi, byte [esp + edx + 0xd0]
lea edx, [eax + esi]
add edx, 0xfaaf54fb
add eax, 0xfaaf54fb
and eax, esi
add eax, eax
mov esi, edx
not esi
and esi, eax
not eax
and eax, edx
sub eax, esi
mov dword [esp + 0x2e0], eax
mov eax, dword [esp + 0x2e0]
mov edx, eax
xor edx, 0x22
and eax, 0x22
lea eax, [edx + eax*2]
inc al
mov edx, dword [esp + 0x30]
mov byte [esp + edx + 0xd0], al
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp eax, 9
jb 0x410010
mov edx, dword [str.jMw1IE__SHELLS]
mov dword [esp + 0x2e0], 0x28203031
mov dword [esp + 0x2e4], 0x100d121c
mov dword [esp + 0x2e8], 0x100d1664
mov dword [esp + 0x2ec], 0x151419
mov dword [esp + 0x2f0], 0x71de1e1f
mov dword [esp + 0x2f4], 0xcb3b0f01
mov dword [esp + 0x2f8], 0xfc6cdcc
mov dword [esp + 0x2fc], 0xf733150d
mov dword [esp + 0x300], 0
mov dword [esp + 0x303], 0
mov dword [esp + 0x260], 0
mov eax, dword [esp + 0x260]
cmp eax, 0x26
ja 0x410156
nop
nop
nop
nop
mov eax, dword [esp + 0x260]
mov esi, dword [esp + 0x260]
movzx esi, byte [esp + esi + 0x2e0]
mov edi, 0xe2
sub edi, eax
add eax, esi
not esi
or edi, esi
lea eax, [eax + edi*2]
add eax, 0x42ff061f
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
add al, 0x35
mov esi, dword [esp + 0x260]
mov byte [esp + esi + 0x2e0], al
inc dword [esp + 0x260]
mov eax, dword [esp + 0x260]
cmp eax, 0x27
jb 0x410100
movzx ebx, byte [esp + 0x2e0]
lea eax, [esp + 0x260]
test bl, bl
je 0x41017b
lea esi, [esp + 0x2e1]
mov byte [eax], bl
inc eax
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x410170
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x41019b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x410190
mov byte [eax], 0
movzx edx, byte [esp + 0xd0]
test dl, dl
je 0x4101cb
lea esi, [esp + 0xd1]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x4101c0
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x4101eb
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [ecx]
inc ecx
test dl, dl
jne 0x4101e0
mov byte [eax], 0
lea ecx, [esp + 0x260]
mov dword [esp + 0x2e0], 0x33ad3173
mov dword [esp + 0x2e4], 0x37a235aa
mov dword [esp + 0x2e8], 0x2bb4294d
mov dword [esp + 0x2ec], 0x2f732db8
mov dword [esp + 0x2f0], 0x23ab2154
mov dword [esp + 0x2f4], 0x274325b4
mov dword [esp + 0x2f8], 0x5b7a5912
mov dword [esp + 0x2fc], 0x5fce5d3d
mov dword [esp + 0x300], 0x53ce51c0
mov dword [esp + 0x304], 0x573555cd
mov dword [esp + 0x308], 0x4bde4929
mov dword [esp + 0x30c], 0x4fd14dd5
mov dword [esp + 0x310], 0x431d41de
mov dword [esp + 0x314], 0x471b45cc
mov dword [esp + 0x318], 0x7bed79ef
mov dword [esp + 0x31c], 0x7f237deb
mov dword [esp + 0x320], 0x73ed7116
mov dword [esp + 0x324], 0x77eb75e6
mov dword [esp + 0x328], 0x6bff6935
mov dword [esp + 0x32c], 0x6ff26dfe
mov dword [esp + 0x330], 0x63fc6105
mov dword [esp + 0x334], 0x67f96507
mov dword [esp + 0x338], 0x9bff99fc
mov dword [esp + 0x33c], 0x9fa39df8
mov dword [esp + 0x340], 0x939291aa
mov dword [esp + 0x34c], 0
mov dword [esp + 0x348], 0
mov dword [esp + 0x344], 0
mov dword [esp + 0x30], 0
mov edx, dword [esp + 0x30]
cmp edx, 0x6f
ja 0x410393
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x30]
movzx ebx, byte [esp + esi + 0x2e0]
lea esi, [edx + 0x1afed628]
mov edi, esi
and edi, ebx
add edx, 0x28
or edx, esi
xor esi, ebx
and edx, ebx
add edx, edi
sub esi, edx
lea edx, [esi + edi*2]
mov dword [esp + 0xd0], edx
mov edx, dword [esp + 0xd0]
add dl, 0xe8
mov esi, dword [esp + 0x30]
mov byte [esp + esi + 0x2e0], dl
inc dword [esp + 0x30]
mov edx, dword [esp + 0x30]
cmp edx, 0x70
jb 0x410340
sub eax, ecx
mov dword [esp + 0xd0], 0x23c321f7
mov dword [esp + 0xd4], 0xdf47ddb2
mov word [esp + 0xd8], 0xd9de
mov dword [esp + 0xda], 0
mov dword [esp + 0xde], 0
mov byte [esp + 0xe2], 0
mov dword [esp + 0x1f8], 0
mov edx, dword [esp + 0x1f8]
cmp edx, 0x12
ja 0x410447
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x1f8]
mov esi, dword [esp + 0x1f8]
movzx esi, byte [esp + esi + 0xd0]
lea edi, [edx + esi]
add edi, 0xf10a4a7b
add edx, 0xf10a4a7b
and edx, esi
add edx, edx
sub edi, edx
mov dword [esp + 0x30], edi
mov edx, dword [esp + 0x30]
add dl, 0xa3
mov esi, dword [esp + 0x1f8]
mov byte [esp + esi + 0xd0], dl
inc dword [esp + 0x1f8]
mov edx, dword [esp + 0x1f8]
cmp edx, 0x13
jb 0x4103f0
lea edx, [esp + 0xc8]
lea esi, [esp + 0xc0]
lea edi, [esp + 0x2e0]
lea ebx, [esp + 0xd0]
push edx
push esi
push eax
push ecx
push edi
push ebx
push 0x448374
call fcn.0040c680
add esp, 0x1c
movzx eax, al
mov eax, dword [eax*4 + 0x441b0c]
mov ecx, 0xcb28f0e0
xor ecx, dword [0x441b14]
add eax, ecx
inc eax
jmp eax
add byte [eax], al
add byte [ecx - 0x3a], dl
add byte [ebp - 0x43000000], 0xc6
add byte [esi - 0x44000000], 0xc6
add byte [edi - 0x41000000], 0xc7
or byte [eax], 0
add byte [eax], al
add bh, al
inc esi
or al, 0
add byte [eax], al
add byte [ebx - 0x73c2f3ba], cl
add byte [eax], al
add byte [ebx + 0x5e], dh
add byte [eax], al
add bh, al
inc esi
or al, 0
add byte [eax], al
add byte [ebx - 0x73c2f3ba], cl
add byte [eax], al
add byte [ebx + 0x5e], dh
jmp 0x432fa2
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 0x2c]
movzx edx, byte [edx + eax]
mov eax, ecx
add eax, 0x57
mov edi, ecx
add edi, edx
lea ecx, [ecx + edx - 0x1e1bd3a9]
and eax, edx
add eax, eax
mov edx, 0x1a8
sub edx, edi
mov edi, eax
and edi, edx
not eax
and ecx, eax
sub ecx, edi
mov dword [esi + 0x2e4], ecx
mov eax, dword [esi + 0x2e4]
add al, 0x9f
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x2c]
mov byte [edx + ecx], al
mov eax, dword [esi + 0xc]
inc eax
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc]
cmp eax, 0x8c
jb 0x432fa2
jmp 0x432ffe
mov edi, dword [esi + 0x40]
mov ecx, 0x22
mov edx, dword [esi + 0x2c]
mov eax, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edi, dword [esi + 0x40]
add edi, 0x88
add edx, 0x88
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov eax, dword [esi + 0x6c]
mov word [eax], 0x86
mov word [eax + 2], 0x88
mov ecx, dword [esi + 0x40]
mov dword [eax + 4], ecx
mov eax, dword [esi + 0x138]
mov al, byte [eax]
mov byte [esi + 0x58], al
mov eax, dword [esi + 0x44]
mov byte [eax], 0x7f
mov byte [eax + 1], 0xa5
mov byte [eax + 2], 0x43
mov byte [eax + 3], 0xab
mov byte [eax + 4], 0x5c
mov byte [eax + 5], 0xa9
mov byte [eax + 6], 0x5a
mov byte [eax + 7], 0xaf
mov byte [eax + 8], 0x41
mov byte [eax + 9], 0xad
mov byte [eax + 0xa], 0x5e
mov byte [eax + 0xb], 0xb3
mov byte [eax + 0xc], 0x5b
mov byte [eax + 0xd], 0xb1
mov byte [eax + 0xe], 0xb0
mov byte [eax + 0xf], 0xb7
mov byte [eax + 0x10], 0
mov dword [esi + 0x10], 0
mov eax, dword [esi + 0x10]
cmp eax, 0x11
jae 0x4330e2
jmp 0x43309d
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x10]
mov edi, dword [esi + 0x44]
movzx ecx, byte [edi + ecx]
mov edx, eax
add edx, 0xbc0b17e5
add eax, 0xe5
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esi + 0x2e8], edx
mov eax, dword [esi + 0x2e8]
add al, 0xbd
mov ecx, dword [esi + 0x10]
mov byte [edi + ecx], al
mov eax, dword [esi + 0x10]
inc eax
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x10]
cmp eax, 0x11
jb 0x43309d
jmp 0x4330e2
mov eax, dword [esi + 0x44]
mov edx, eax
mov edi, dword [esi + 0x48]
mov ecx, 4
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov edi, dword [esi + 0x48]
add edi, 0x10
add eax, 0x10
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov edx, dword [esi + 0x140]
mov word [edx], 0xe
mov word [edx + 2], 0x10
mov eax, dword [esi + 0x48]
mov dword [edx + 4], eax
mov eax, dword [esi + 0x70]
mov ecx, dword [esi + 0x6c]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov dword [eax + 8], 0x34
mov byte [esi + 0x88], 0xf
mov byte [esi + 0x89], 0xe
mov byte [esi + 0x8a], 9
mov byte [esi + 0x8b], 8
mov dword [esi + 0x93], 0
mov dword [esi + 0x90], 0
mov dword [esi + 0x8c], 0
mov dword [esi + 0x14], 0
mov eax, dword [esi + 0x14]
cmp eax, 0xf
jae 0x4331c5
jmp 0x433179
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
movzx ecx, byte [esi + ecx + 0x88]
mov edx, eax
add edx, 0x507959aa
and edx, ecx
lea eax, [eax + ecx + 0x507959aa]
add edx, edx
sub eax, edx
mov dword [esi + 0x2ec], eax
mov eax, dword [esi + 0x2ec]
add al, 0x5a
mov ecx, dword [esi + 0x14]
mov byte [esi + ecx + 0x88], al
mov eax, dword [esi + 0x14]
inc eax
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x14]
cmp eax, 0xf
jb 0x433179
jmp 0x4331c5
mov eax, dword [esi + 0x88]
mov ecx, dword [0x449688]
cmp ecx, 0
je 0x43324d
mov edx, dword [0x44968c]
xor edi, edi
cmp dword [edx + edi*8], 0x5cefe095
jne 0x4331f1
mov ecx, dword [edx + edi*8 + 4]
cmp ecx, eax
je 0x43324d
jmp 0x4331fa
add edi, 1
cmp edi, ecx
je 0x43324b
jmp 0x4331de
mov eax, dword [0x449690]
xor edx, edx
sub esp, 0x24
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 6
mov dword [esp + 0xc], 0x50000018
mov dword [esp + 0x10], 3
mov dword [esp + 0x14], 3
mov eax, dword [esi + 0x70]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
mov eax, dword [esi + 0x74]
mov dword [esp + 0x20], eax
call fcn.004388a0
add esp, 0x24
jmp 0x43324d
jmp 0x43324d
mov eax, dword [esi + 0x74]
mov eax, dword [eax]
xor ecx, ecx
sub eax, 8
setne cl
mov dword [esi + 0x1f0], ecx
mov eax, dword [esi + 0x1f4]
mov ecx, dword [esi + 0x1f0]
mov eax, dword [eax + ecx*4]
mov ecx, dword [0x4462d4]
xor ecx, 0x2b0a6c02
sub eax, ecx
jmp eax