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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10c
cmp dword [ecx + 0x20], 0
je 0x409b79
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00405eb0
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], eax
movzx eax, byte [esi]
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.00408000
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x70], 0x1fe0f0e0
mov word [esp + 0x74], 0x7b0a
mov eax, 0xf148
movzx edx, word [esp + eax*2 - 0x1e220]
mov ecx, eax
and ecx, edx
mov edi, ecx
and edi, 0xf149
mov ebx, ecx
and ebx, 2
or ecx, 2
imul ecx, ebx
xor ebx, 2
imul ebx, edi
add ecx, ebx
add edx, eax
add edx, 0xb5620000
mov edi, ecx
xor edi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, edi
add ecx, 0x75c0
mov word [esp + eax*2 - 0x1e220], cx
inc eax
cmp eax, 0xf14b
jne 0x409700
lea ebx, [esp + 0x70]
mov dword [esp + 8], esi
mov ecx, esi
push 0x443fa4
push ebx
push dword [esp + 8]
call fcn.00408fc0
mov dword [esp + 0x70], 0xeb8052f3
xor eax, eax
mov cl, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [esp + eax*2 + 0x70]
lea ebp, [eax - 0x53043a45]
lea edx, [esi + esi]
not edx
add edx, esi
and edx, ebp
mov ebp, 0x3a44
sub ebp, eax
mov edi, esi
not edi
or edi, ebp
add esi, edi
inc esi
mov edi, edx
xor edi, esi
not esi
and esi, edx
add edi, edx
sub edi, esi
add edi, 0x9821d227
mov edx, edi
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
mov word [esp + eax*2 + 0x70], dx
mov eax, 1
xor edi, edi
test cl, 1
mov ecx, 0
jne 0x409780
lea eax, [esp + 6]
mov ecx, dword [esp + 8]
push eax
push ebx
push dword [esp + 8]
call fcn.00408fc0
mov eax, dword [str.hRjzG3__SAMSON]
mov dword [esp + 0x70], 0x518bc682
mov cl, 1
xor ebp, ebp
nop
nop
nop
nop
nop
movzx edx, word [esp + edi*2 + 0x70]
mov esi, edi
or esi, 0x4fe766de
xor esi, edx
add esi, 0x80c4c90f
mov edx, esi
and edx, 1
xor esi, 1
lea edx, [esi + edx*2]
mov word [esp + edi*2 + 0x70], dx
mov edi, 1
test cl, 1
mov ecx, 0
jne 0x409800
mov ecx, dword [esp + 8]
push eax
push ebx
push dword [esp + 8]
call fcn.00408fc0
mov dword [esp + 0x70], 0x90e2afe8
mov dword [esp + 0x74], 0xa11ba712
mov dword [esp + 0x78], 0xaf1793ec
mov word [esp + 0x7c], 0x3471
mov eax, 0xafb7b09c
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [esp + ebp*2 + 0x70]
lea ecx, [ebp + 0x50484f63]
mov esi, eax
and esi, 0xae342082
and ecx, 0x50404c2d
or ecx, esi
xor ecx, edx
mov edx, ecx
xor edx, 0xae3c23c2
add edx, 0x7dbd84e7
mov esi, edx
and esi, 1
and ecx, 1
and edx, 0xfffe
or edx, ecx
lea ecx, [edx + esi*2]
mov word [esp + ebp*2 + 0x70], cx
inc ebp
dec eax
cmp ebp, 7
jne 0x409870
mov dword [esp + 0x16], 0xfb725664
xor eax, eax
mov cl, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, word [esp + eax*2 + 0x16]
lea edx, [eax + 0x14298ead]
mov esi, edi
and esi, 0xce5e
xor esi, 0x29a3ce5e
mov ebp, edi
xor ebp, 0x29a3ce5e
or edi, 0x31a1
and edi, ebp
or edi, esi
lea esi, [eax*2 + 0x28531d5a]
neg esi
add esi, eax
add esi, 0x14298eac
mov ebp, esi
not ebp
or ebp, 0x29a3ce5e
add esi, ebp
inc esi
and edx, 0x140800a1
or edx, esi
xor edx, edi
mov esi, edx
and esi, 0xa97
xor edx, 0x8a97
lea edx, [edx + esi*2]
inc edx
mov word [esp + eax*2 + 0x16], dx
mov eax, 1
xor edi, edi
test cl, 1
mov ecx, 0
jne 0x4098d0
lea eax, [esp + 0x16]
mov ebp, dword [esp + 8]
mov ecx, ebp
push ebx
push eax
push dword [esp + 8]
call fcn.00408fc0
mov dword [esp + 0x70], 0xe346e75f
mov word [esp + 0x74], 0x9c3b
nop
lea eax, [edi + 0x11b1]
xor ax, word [esp + edi*2 + 0x70]
add eax, 0x7278
mov word [esp + edi*2 + 0x70], ax
inc edi
cmp edi, 3
jne 0x409970
mov ecx, ebp
push dword [esp + 0x10]
push dword [esp + 0x10]
push ebx
push dword [esp + 0xc]
call fcn.00409260
mov dword [esp + 0x16], 0x3850383d
mov dword [esp + 0x1a], 0x3875384e
mov dword [esp + 0x1e], 0x384d3847
mov dword [esp + 0x22], 0x38083870
mov dword [esp + 0x26], 0x387e3852
mov dword [esp + 0x2a], 0x384c3878
mov dword [esp + 0x2e], 0x380b3830
mov dword [esp + 0x32], 0x38783841
mov dword [esp + 0x36], 0x387b3842
mov dword [esp + 0x3a], 0x38413879
mov dword [esp + 0x3e], 0x38413873
mov dword [esp + 0x42], 0x383a3840
mov dword [esp + 0x46], 0x38783870
mov dword [esp + 0x4a], 0x3874384a
mov dword [esp + 0x4e], 0x387f3837
mov dword [esp + 0x52], 0x3849387d
mov dword [esp + 0x56], 0x3804387f
mov dword [esp + 0x5a], 0x38633820
mov dword [esp + 0x5e], 0x3856386d
mov dword [esp + 0x62], 0x3861386a
mov dword [esp + 0x66], 0x38553867
mov dword [esp + 0x6a], 0x38143851
mov word [esp + 0x6e], 0x38ca
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, word [esp + eax*2 + 0x16]
lea edx, [eax + 0x7f26dc8e]
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
add ecx, 0xfffff81e
mov word [esp + eax*2 + 0x16], cx
inc eax
cmp eax, 0x2d
jne 0x409a60
movzx eax, word [esp + 0x16]
test ax, ax
je 0x409ab1
lea ebx, [esp + 0x70]
lea ecx, [esp + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409aa0
mov word [ebx], 0
movzx ecx, byte [ebp + 0x60]
test cl, cl
je 0x409ae1
lea eax, [ebp + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebx], cx
add ebx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409ad0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [ebp + 0x80]
mov dword [esp + 0x16], 0x7643769e
mov dword [esp + 0x1a], 0x765d7653
mov word [esp + 0x1e], 0x76a5
xor ecx, ecx
xor edx, edx
nop
nop
mov esi, ecx
and esi, 2
mov edi, edx
xor edi, 0xb9e9
add edi, esi
xor di, word [esp + edx*2 + 0x16]
add edi, 0x30b8
mov word [esp + edx*2 + 0x16], di
inc edx
add ecx, 2
cmp edx, 5
jne 0x409b10
lea ecx, [esp + 0x70]
push 0x493e0
push eax
mov esi, dword [esp + 8]
push esi
push 0
push 0
push ecx
lea eax, [esp + 0x2e]
push eax
call fcn.0040bfc0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00408010
add esp, 4
mov eax, dword [ebp + 0x80]
add dword [ebp + 4], eax
mov dword [ebp + 0x80], 0
jmp 0x409b7b
mov bl, 1
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret