Function at 0x409990
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x409eca
mov ebp, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406250
add esp, 4
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], eax
movzx eax, byte [ebp]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 6], al
mov byte [esp + 7], 0
mov dword [esp + 0x10], edx
lea eax, [edx + 0x400]
push eax
call fcn.004083f0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x74], 0x9d9dae9c
mov byte [esp + 0x78], 0x20
mov dword [esp + 0x79], 0
mov dword [esp + 0x7c], 0
lea eax, [esp + 0x74]
mov ecx, 0xf6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [eax]
lea edx, [ecx - 0x8a5de00]
or edx, esi
and esi, ecx
not edx
or edx, esi
mov edi, edx
and edi, 0xd0
mov esi, edx
and esi, 2
mov ebx, esi
xor ebx, 2
imul ebx, edi
or edi, 2
imul edi, esi
xor edx, 0xd2
add edx, ebx
add edx, edi
inc dl
mov byte [eax], dl
inc eax
dec ecx
cmp ecx, 0xea
jne 0x409a30
lea eax, [esp + 0x74]
mov dword [esp + 8], ebp
mov ecx, ebp
push 0x44cd44
push eax
push dword [esp + 8]
call fcn.004091e0
mov dword [esp + 0x74], 0x219a9c94
mov dword [esp + 0x78], 0
mov eax, 9
mov ebp, 0x26c186b6
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x6b]
mov edi, eax
and edi, 0xb
lea ebx, [ebp - 0x26c186b0]
and ebx, 0xb
xor ebx, 0x1136610b
xor edx, 0xe8c81af4
mov ecx, ebp
and ecx, 0x20c002b4
or ecx, edi
or ecx, ebx
mov edi, edx
and edi, ecx
add ecx, edx
add edi, edi
sub ecx, edi
add cl, 0x93
mov byte [esp + eax + 0x6b], cl
inc eax
dec ebp
cmp eax, 0x11
jne 0x409ab0
lea eax, [esp + 6]
mov esi, dword [esp + 8]
mov ecx, esi
push eax
lea ebx, [esp + 0x78]
push ebx
push dword [esp + 8]
call fcn.004091e0
mov eax, dword [str.MeHdy4__pl4vs06]
mov dword [esp + 0x74], 0xf75aa09c
mov word [esp + 0x78], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
xor edx, 0x81
mov edi, ecx
or edi, 0x7e
and edx, edi
add edx, edi
xor dl, byte [esp + ecx + 0x74]
add dl, 0x8a
mov byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 6
jne 0x409b30
mov ecx, esi
push eax
push ebx
push dword [esp + 8]
call fcn.004091e0
mov dword [esp + 0x74], 0x7b646477
mov dword [esp + 0x78], 0x6c7f6077
mov dword [esp + 0x7c], 0x7275706f
mov byte [esp + 0x80], 0xdc
mov dword [esp + 0x81], 0
mov dword [esp + 0x84], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
xor edi, 0xd2
mov edx, eax
and edx, 0x1a
sub edx, edi
xor dl, byte [esp + ecx + 0x74]
add dl, 0x1a
mov byte [esp + ecx + 0x74], dl
inc ecx
add eax, 2
cmp ecx, 0x14
jne 0x409ba0
mov dword [esp + 0x14], 0x89063633
mov word [esp + 0x18], 0
mov eax, 0x26b3e3a2
mov ecx, 0x594c1c5d
nop
nop
nop
nop
movzx ebp, byte [esp + eax - 0x26b3e38e]
mov ebx, ebp
not ebx
lea edx, [eax - 0x1fffffff]
and ebx, 0xc7
mov esi, edx
or esi, 0xf20081c7
lea edi, [ecx + esi]
and edx, 0x4b36228
xor ebp, 0xf20081c7
or ebp, ebx
mov ebx, eax
sub ebx, esi
and ebx, 0x2c9ff743
mov esi, edi
and esi, 0x1000003c
or esi, ebx
xor esi, edx
and edx, edi
or edx, esi
xor edx, ebp
mov ebx, edx
xor ebx, 0x6c
and edx, 0xfebff72f
xor edx, 0x6c9ff7d3
and ebx, edx
add ebx, edx
inc bl
mov byte [esp + eax - 0x26b3e38e], bl
inc eax
dec ecx
cmp eax, 0x26b3e3a8
jne 0x409be0
lea eax, [esp + 0x14]
mov ebp, dword [esp + 8]
mov ecx, ebp
lea esi, [esp + 0x74]
push esi
push eax
push dword [esp + 8]
call fcn.004091e0
mov dword [esp + 0x74], 0xcac2c0c2
mov byte [esp + 0x78], 0x74
mov word [esp + 0x79], 0
mov byte [esp + 0x7b], 0
mov eax, 0xc1f8796
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0xc1f8722]
mov ecx, eax
or ecx, edx
and edx, eax
sub ecx, edx
add ecx, 0xc3625a11
mov edx, ecx
xor edx, 0xfe
or ecx, 1
and edx, ecx
add edx, ecx
mov byte [esp + eax - 0xc1f8722], dl
inc eax
cmp eax, 0xc1f879e
jne 0x409c90
mov ecx, ebp
push dword [esp + 0x10]
push dword [esp + 0x10]
push esi
push dword [esp + 0xc]
call fcn.004094c0
mov dword [esp + 0x14], 0xd1bfcf89
mov dword [esp + 0x18], 0xd5a6d3be
mov dword [esp + 0x1c], 0xd9b8d7b3
mov dword [esp + 0x20], 0xddf5dbac
mov dword [esp + 0x24], 0xe1a5df88
mov dword [esp + 0x28], 0xe585e390
mov dword [esp + 0x2c], 0xe9c6e7de
mov dword [esp + 0x30], 0xed9deb87
mov dword [esp + 0x34], 0xf19aef80
mov dword [esp + 0x38], 0xf582f39b
mov dword [esp + 0x3c], 0xf984f797
mov dword [esp + 0x40], 0xfdcbfb8c
mov dword [esp + 0x44], 0x18fff9a
mov dword [esp + 0x48], 0x56d0372
mov dword [esp + 0x4c], 0x962072b
mov dword [esp + 0x50], 0xd7e0b6b
mov dword [esp + 0x54], 0x11330f6f
mov dword [esp + 0x58], 0x15701330
mov dword [esp + 0x5c], 0x19611765
mov dword [esp + 0x60], 0x1d7e1b76
mov dword [esp + 0x64], 0x216c1f7f
mov dword [esp + 0x68], 0x251d235b
mov word [esp + 0x6c], 0x2724
mov byte [esp + 0x72], 0
mov dword [esp + 0x6e], 0
xor eax, eax
nop
nop
mov ecx, eax
add cl, 0x4d
xor cl, byte [esp + eax + 0x14]
add cl, 0x7f
mov byte [esp + eax + 0x14], cl
inc eax
cmp eax, 0x5f
jne 0x409da0
movzx eax, word [esp + 0x14]
test ax, ax
je 0x409de1
lea esi, [esp + 0x74]
lea ecx, [esp + 0x16]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409dd0
mov word [esi], 0
movzx ecx, byte [ebp + 0x60]
test cl, cl
je 0x409e11
lea eax, [ebp + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [esi], cx
add esi, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409e00
mov dword [esi], 0xa000d
mov word [esi + 4], 0
mov eax, dword [ebp + 0x80]
mov dword [esp + 0x14], 0x363012f
mov dword [esp + 0x18], 0x76f0574
mov word [esp + 0x1c], 0x908
mov dword [esp + 0x1e], 0
mov word [esp + 0x22], 0
xor ecx, ecx
mov edx, 0xdf0fc7f
movzx esi, byte [esp + ecx + 0x14]
mov edi, edx
and edi, 0x8309c03
mov ebx, ecx
and ebx, 0xc
add ebx, edi
add ebx, 0x220e0300
xor ebx, esi
mov esi, ebx
and esi, 0x81
and ebx, 0x7e
xor ebx, 2
sub ebx, esi
inc bl
mov byte [esp + ecx + 0x14], bl
inc ecx
dec edx
cmp ecx, 0x10
jne 0x409e50
lea ecx, [esp + 0x74]
push 0x493e0
push eax
mov esi, dword [esp + 8]
push esi
push 0
push 0
push ecx
lea eax, [esp + 0x2c]
push eax
call fcn.0040c980
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00408400
add esp, 4
mov eax, dword [ebp + 0x80]
add dword [ebp + 4], eax
mov dword [ebp + 0x80], 0
jmp 0x409ecc
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret