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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb8
mov ebx, dword [ebp + 8]
mov dword [esp + 0x84], ecx
add ebx, dword [ecx + 0x60]
mov dword [esp + 0x88], 0x2f562873
mov dword [esp + 0x8c], 0x9028535d
mov dword [esp + 0x90], 0x44303a4a
mov dword [esp + 0x94], 0x33478578
mov dword [esp + 0x98], 0x434d4a32
mov dword [esp + 0x9c], 0x3b424a45
mov dword [esp + 0xa0], 0xc27fc97f
mov dword [esp + 0xa4], 0xb2b3bfb0
mov dword [esp + 0xa8], 0x545256c2
mov dword [esp + 0xac], 0x5d50
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x27
ja 0x409aab
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + eax + 0x88]
lea esi, [ecx + 0x67]
lea eax, [ecx + edx]
and esi, edx
mov edi, 0x71c53098
sub edi, ecx
or edi, edx
add edi, ecx
add edi, esi
not edi
add edi, eax
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x20]
add al, 0x2f
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x28
jb 0x409a60
mov dword [esp + 8], 0x5b404cba
mov dword [esp + 0xc], 0
mov word [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 9
ja 0x409b37
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx edx, byte [esp + eax + 8]
lea esi, [ecx - 0x120fa6cc]
lea eax, [ecx + edx]
add eax, 0xedf05934
and esi, edx
mov edi, 0x120fa6cb
sub edi, ecx
or edi, edx
add edi, ecx
lea ecx, [esi + edi]
add ecx, 0xedf05935
mov edx, ecx
xor edx, eax
not ecx
and ecx, eax
add ecx, ecx
sub ecx, edx
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x20]
add al, 0x94
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xa
jb 0x409ae0
mov dword [esp + 0x20], 0x80a3635
mov dword [esp + 0x24], 0x40c3a3a
mov dword [esp + 0x28], 0x7fcfa35
mov dword [esp + 0x2c], 0xfcff04fb
mov dword [esp + 0x30], 0xccff0b08
mov dword [esp + 0x34], 0xedda7a1
mov dword [esp + 0x38], 0x9f7010c
mov dword [esp + 0x3c], 0x10d4ca06
mov dword [esp + 0x40], 0x1e15151b
mov dword [esp + 0x44], 0x1e171d15
mov dword [esp + 0x48], 0xe1accb1c
mov dword [esp + 0x4c], 0xe41b171b
mov dword [esp + 0x50], 0xdc28dada
mov dword [esp + 0x54], 0xd02291f7
mov dword [esp + 0x58], 0x95ffd62d
mov dword [esp + 0x5c], 0xcc2c2ed0
mov dword [esp + 0x60], 0xc984e088
mov dword [esp + 0x64], 0x3dcb3535
mov dword [esp + 0x68], 0xe8c73ec1
mov word [esp + 0x6c], 0xa984
mov dword [esp + 0x72], 0
mov dword [esp + 0x6e], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x55
ja 0x409c42
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x20]
lea edx, [eax + 0x420b8471]
mov esi, edx
and esi, ecx
xor edx, ecx
lea edx, [edx + esi*2]
add eax, 0x71
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp], edx
mov eax, dword [esp]
add al, 0xe9
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x56
jb 0x409c00
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x20]
mov edx, ebx
test cl, cl
je 0x409c6b
lea esi, [esp + 0x21]
mov edx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409c60
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x409c8b
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409c80
mov byte [edx], 0
movzx eax, byte [esp + 8]
test al, al
je 0x409cab
lea ecx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409ca0
mov esi, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x88]
test al, al
mov dword [esp + 0x1c], ebx
je 0x409cdb
lea ecx, [esp + 0x89]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409cd0
mov byte [edx], 0
mov ebx, dword [ebp + 0x14]
mov ecx, ebx
shr ecx, 2
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
xor eax, 3
mov ecx, esi
mov esi, ebx
or esi, 0xfffffffc
and esi, eax
add esi, edx
mov eax, ebx
and eax, 0xfffffffc
add eax, ecx
mov ecx, ebx
and ecx, 3
mov dword [esp + 0x7c], ecx
shr ecx, 1
mov edi, eax
mov dword [esp + 0x80], eax
mov edi, esi
mov ebx, dword [esp + 0x80]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ecx, dword [ebp + 0x14]
test cl, 1
je 0x409d4e
mov edi, dword [ebp + 0x14]
mov ecx, edi
not ecx
or ecx, 0xfffffffe
mov ebx, dword [esp + 0x7c]
add ebx, ecx
mov ecx, edi
and ecx, 2
movzx eax, byte [eax + ebx + 1]
mov byte [esi + ecx], al
mov dword [esp + 0x20], 0x7e7f9b99
mov dword [esp + 0x24], 0x6a6e2426
mov dword [esp + 0x28], 0x3a6f3838
mov dword [esp + 0x2c], 0x302d3d20
mov dword [esp + 0x30], 0x25243035
mov dword [esp + 0x34], 0x71736835
mov word [esp + 0x38], 0x7371
mov byte [esp + 0x3a], 0x62
mov dword [esp + 0x3b], 0
mov dword [esp + 0x3e], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x21
ja 0x409e02
nop
nop
nop
nop
nop
mov esi, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edi, byte [esp + eax + 0x20]
lea eax, [esi + 0x6a]
mov ecx, 0x95
sub ecx, esi
sub ecx, edi
add esi, edi
add esi, 0x70f1196a
and eax, edi
add eax, eax
and ecx, eax
not eax
and eax, esi
sub eax, ecx
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x88]
add al, 0x1a
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x22
jb 0x409db0
add edx, dword [ebp + 0x14]
movzx eax, byte [esp + 0x20]
test al, al
je 0x409e2d
lea ecx, [esp + 0x21]
mov esi, dword [esp + 0x1c]
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 0x409e20
jmp 0x409e31
mov esi, dword [esp + 0x1c]
mov byte [edx], 0
sub edx, esi
mov eax, dword [esp + 0x84]
add dword [eax + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10