Function at 0x409520
Capabilities:
Contain obfuscated stackstrings
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x7c
mov esi, dword [esp + 0x90]
mov dword [esp + 8], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 4], eax
mov dword [esp + 0x14], 0x8f848653
mov dword [esp + 0x18], 0x4a828b71
mov dword [esp + 0x1c], 0x768a8064
mov dword [esp + 0x20], 0x9b67255e
mov dword [esp + 0x24], 0x6b61609c
mov dword [esp + 0x28], 0x93986099
mov dword [esp + 0x2c], 0x9c5f915f
mov dword [esp + 0x30], 0x545b5f56
mov dword [esp + 0x34], 0x63804ac
mov dword [esp + 0x38], 0x3d36
xor edi, edi
nop
nop
movzx eax, byte [esp + edi + 0x14]
lea ebx, [edi + 0x5da51704]
and ebx, eax
mov edx, ebx
and edx, 0x7d
mov ebp, ebx
and ebp, 2
or ebx, 2
imul ebx, ebp
xor ebp, 2
imul ebp, edx
add ebx, ebp
add eax, edi
add eax, 0x5da51704
mov edx, eax
not edx
and edx, ebx
not ebx
and ebx, eax
sub ebx, edx
add bl, 0xec
mov byte [esp + edi + 0x14], bl
mov eax, edi
and eax, 1
xor edi, 1
lea edi, [edi + eax*2]
cmp edi, 0x28
jb 0x409590
mov dword [esp], 0x77007c66
mov edi, 0x41
mov ebx, 0xbe
movzx edx, byte [esp + ebx - 0xbe]
mov eax, ebx
or eax, edx
or edx, edi
sub al, dl
movzx eax, al
add eax, edi
add al, 0x4a
mov byte [esp + ebx - 0xbe], al
dec edi
inc ebx
cmp edi, 0x3d
jne 0x4095f0
mov dword [esp + 0x3c], 0xd8f73d3f
mov dword [esp + 0x40], 0xd7ddcbda
mov dword [esp + 0x44], 0xd6fe10c8
mov dword [esp + 0x48], 0x302f2fcd
mov dword [esp + 0x4c], 0x282d372b
mov dword [esp + 0x50], 0x2fd6f12a
mov dword [esp + 0x54], 0xe2213d25
mov dword [esp + 0x58], 0x3222302c
mov dword [esp + 0x5c], 0x3638cbe9
mov dword [esp + 0x60], 0xfbe53c3b
mov dword [esp + 0x64], 0x3a36343e
mov dword [esp + 0x68], 0x7fedafe
mov dword [esp + 0x6c], 0xb010f0b
mov dword [esp + 0x70], 0xd60d0407
mov word [esp + 0x74], 0x93ca
mov dword [esp + 0x76], 0
xor edi, edi
mov ecx, esi
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi + 0x3c]
lea ebx, [edi - 0x3804f10d]
mov ebp, 0x3804f10c
sub ebp, edi
or ebp, eax
lea edx, [edi*2 - 0x7009e21a]
neg edx
add edx, edi
add edx, 0xf2
mov esi, 0xc
sub esi, edi
and esi, 0xc0
and ebx, 0x3f
or ebx, esi
xor ebx, 0x3f
or ebx, edx
and ebx, eax
lea eax, [ebp*2]
not eax
add eax, ebp
or eax, ebx
add eax, 0x447950ab
mov edx, eax
and edx, 1
xor eax, 1
lea eax, [eax + edx*2]
add al, 0x95
mov byte [esp + edi + 0x3c], al
mov eax, edi
and eax, 1
xor edi, 1
lea edi, [edi + eax*2]
cmp edi, 0x3e
jb 0x4096a0
add ecx, dword [esp + 4]
mov word [esp + 0xc], 0xe0e3
mov byte [esp + 0xe], 0xe
mov dword [esp + 0xf], 0
xor edi, edi
mov edx, 0xffffffff
mov ebp, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edx
or esi, 0x7d
mov eax, edi
or eax, 0x7d
add eax, esi
add eax, edi
inc al
xor al, byte [esp + edi + 0xc]
add al, 0x8f
mov byte [esp + edi + 0xc], al
lea eax, [edi + 1]
dec edx
mov edi, eax
cmp eax, 7
jne 0x409740
movzx ebx, byte [esp + 0xc]
mov edx, ecx
test bl, bl
je 0x40978b
lea eax, [esp + 0xd]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409780
mov byte [edx], 0
movzx eax, byte [ebp + 0x60]
test al, al
mov esi, dword [esp + 0x94]
je 0x4097ab
lea edi, [ebp + 0x61]
mov byte [edx], al
inc edx
movzx eax, byte [edi]
inc edi
test al, al
jne 0x4097a0
mov byte [edx], 0
movzx eax, byte [esp + 0x3c]
test al, al
je 0x4097cb
lea edi, [esp + 0x3d]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [edi]
inc edi
test al, al
jne 0x4097c0
mov byte [edx], 0
movzx eax, byte [esi]
test al, al
je 0x4097eb
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [esi]
inc esi
test al, al
jne 0x4097e0
mov dword [esp + 4], ecx
mov byte [edx], 0
movzx eax, byte [esp]
test al, al
je 0x40980b
lea ecx, [esp + 1]
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409800
mov byte [edx], 0
movzx eax, byte [esp + 0x14]
test al, al
je 0x40982b
lea ecx, [esp + 0x15]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409820
mov byte [edx], 0
mov ebp, dword [esp + 0x9c]
mov ecx, ebp
shr ecx, 2
mov esi, dword [esp + 0x98]
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebp
xor eax, 3
mov ebx, ebp
or ebx, 0xfffffffc
and ebx, eax
add edx, ebx
add ebx, esi
mov eax, ebp
and eax, 3
mov ecx, eax
shr ecx, 1
mov esi, ebx
mov edi, edx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
xor eax, 1
mov ecx, ebp
or ecx, 2
and ecx, eax
add edx, ecx
mov eax, ebp
test al, 1
je 0x409886
movzx eax, byte [ebx + ecx]
mov byte [edx], al
inc edx
mov ebx, dword [esp + 8]
mov dword [esp + 0x3c], 0x393f3b3d
mov byte [esp + 0x40], 0x24
mov dword [esp + 0x41], 0
mov ecx, 0x306c4348
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x306c430c]
mov eax, edi
not eax
or eax, ecx
add eax, edi
lea eax, [eax*2 + 2]
add edi, ecx
mov esi, eax
xor esi, edi
not eax
and eax, edi
add eax, eax
sub eax, esi
mov esi, eax
and esi, 0x17
xor eax, 0x97
lea eax, [eax + esi*2]
inc al
mov byte [esp + ecx - 0x306c430c], al
inc ecx
cmp ecx, 0x306c4351
jne 0x4098b0
mov dword [esp + 0x14], 0x3e21c5c3
mov byte [esp + 0x18], 0xd0
mov dword [esp + 0x19], 0
mov dword [esp + 0x1c], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x2d
xor cl, byte [esp + eax + 0x14]
add cl, 0x1f
mov byte [esp + eax + 0x14], cl
inc eax
cmp eax, 0xc
jne 0x409920
movzx eax, byte [esp + 0x14]
test al, al
je 0x40995b
lea ecx, [esp + 0x15]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409950
mov byte [edx], 0
movzx eax, byte [ebx + 0x60]
test al, al
je 0x40997b
lea ecx, [ebx + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409970
mov byte [edx], 0
movzx eax, byte [esp + 0x3c]
test al, al
je 0x40999b
lea ecx, [esp + 0x3d]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409990
mov byte [edx], 0
mov eax, edx
not eax
mov ecx, dword [esp + 4]
and eax, ecx
not ecx
and ecx, edx
sub ecx, eax
add dword [ebx + 0x80], ecx
add esp, 0x7c
pop esi
pop edi
pop ebx
pop ebp
ret 0x10