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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x70
mov esi, dword [esp + 0x88]
mov dword [esp + 8], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 4], eax
mov dword [esp + 0x10], 0x372c2e03
mov dword [esp + 0x14], 0x6a322b21
mov dword [esp + 0x18], 0x2e3a301c
mov dword [esp + 0x1c], 0x3b2f6d76
mov dword [esp + 0x20], 0x3b313024
mov dword [esp + 0x24], 0x23383039
mov dword [esp + 0x28], 0x34772177
mov dword [esp + 0x2c], 0x3c3b373e
mov dword [esp + 0x30], 0x6e686c14
mov word [esp + 0x34], 0x656e
xor ebx, ebx
nop
nop
nop
mov eax, ebx
add al, 0x40
xor byte [esp + ebx + 0x10], al
inc ebx
cmp ebx, 0x26
jne 0x4096b0
mov dword [esp + 0xc], 0xa0d22
mov dword [esp + 0x36], 0xaf5c0400
mov dword [esp + 0x3a], 0xaab6a6af
mov dword [esp + 0x3e], 0xd1536ba1
mov dword [esp + 0x42], 0xdfd4dada
mov dword [esp + 0x46], 0xdfd6dad4
mov dword [esp + 0x4a], 0xc20328df
mov dword [esp + 0x4e], 0x5dad4da
mov dword [esp + 0x52], 0xddcfdbdd
mov dword [esp + 0x56], 0xd1c11e36
mov dword [esp + 0x5a], 0x163ed7cc
mov dword [esp + 0x5e], 0xedcbcfd3
mov dword [esp + 0x62], 0xea2b012b
mov dword [esp + 0x66], 0xfeeaf2f4
mov dword [esp + 0x6a], 0x9e6ffe0
mov word [esp + 0x6e], 0x4627
mov edi, 0xb5
mov ebx, 0x4a
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi - 0x7f]
mov ebp, ebx
or ebp, eax
not eax
or eax, edi
and eax, ebp
mov dl, 0x57
sub dl, al
mov byte [esp + edi - 0x7f], dl
inc edi
dec ebx
cmp edi, 0xef
jne 0x409750
mov ecx, dword [esp + 0x84]
add ecx, dword [esp + 4]
mov word [esp + 1], 0xeeef
mov byte [esp + 3], 0xc4
xor edx, edx
nop
nop
nop
nop
nop
nop
mov eax, edx
add al, 0x52
xor al, byte [esp + edx + 1]
add al, 0x70
mov byte [esp + edx + 1], al
inc edx
cmp edx, 3
jne 0x409790
movzx ebx, byte [esp + 1]
mov edx, ecx
test bl, bl
je 0x4097cb
lea edi, [esp + 2]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x4097c0
mov byte [edx], 0
mov eax, dword [esp + 8]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x4097eb
lea edi, [eax + 0x61]
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x4097e0
mov byte [edx], 0
movzx ebx, byte [esp + 0x36]
test bl, bl
je 0x40980b
lea edi, [esp + 0x37]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409800
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
mov dword [esp + 4], ecx
je 0x40982b
inc esi
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409820
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x40985d
lea edi, [esp + 0xd]
mov esi, dword [esp + 0x90]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409850
jmp 0x409864
mov esi, dword [esp + 0x90]
mov byte [edx], 0
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x40988b
lea edi, [esp + 0x11]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409880
mov byte [edx], 0
mov ecx, esi
shr ecx, 2
mov ebp, dword [esp + 0x8c]
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, esi
xor eax, 3
mov ebx, esi
or ebx, 0xfffffffc
and ebx, eax
add edx, ebx
add ebx, ebp
mov ebp, esi
and ebp, 3
mov ecx, ebp
shr ecx, 1
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, ebp
xor eax, 1
mov ecx, esi
or ecx, 2
and ecx, eax
add edx, ecx
xor esi, 2
and esi, ebp
je 0x40990b
mov edi, esi
not edi
movzx eax, byte [ebx + ecx]
mov byte [edx], al
lea eax, [esi + esi]
add edi, eax
je 0x4098fd
add edi, edi
movzx eax, byte [ebx + ecx + 1]
mov byte [edx + 1], al
cmp edi, esi
jne 0x409900
add edx, 2
jmp 0x40990b
inc edx
jmp 0x40990b
movzx eax, byte [ebx + ecx + 2]
mov byte [edx + 2], al
add edx, 3
mov dword [esp + 0x36], 0x33353d3b
mov byte [esp + 0x3a], 0x3a
xor ecx, ecx
xor edi, edi
nop
nop
nop
nop
movzx eax, byte [esp + edi + 0x36]
mov esi, ecx
and esi, 0xc
mov ebx, edi
xor ebx, 0x20a24106
add ebx, esi
mov esi, ebx
and esi, eax
add ebx, eax
add esi, esi
sub ebx, esi
add bl, 0xd0
mov byte [esp + edi + 0x36], bl
inc edi
add ecx, 2
cmp edi, 5
jne 0x409920
mov dword [esp + 0x10], 0x8186a0a4
mov byte [esp + 0x14], 0xbd
xor ecx, ecx
nop
nop
nop
mov eax, ecx
and al, 1
mov ah, cl
and ah, 0xfe
sub al, ah
movzx esi, al
mov eax, ecx
xor eax, 0x31
add eax, ecx
add eax, esi
xor al, byte [esp + ecx + 0x10]
add al, 0x78
mov byte [esp + ecx + 0x10], al
inc ecx
cmp ecx, 5
jne 0x409960
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x4099ad
lea esi, [esp + 0x11]
mov eax, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4099a0
jmp 0x4099b1
mov eax, dword [esp + 8]
mov byte [edx], 0
movzx ecx, byte [eax + 0x60]
test cl, cl
je 0x4099cb
lea esi, [eax + 0x61]
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4099c0
mov byte [edx], 0
movzx ecx, byte [esp + 0x36]
test cl, cl
je 0x4099eb
lea esi, [esp + 0x37]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4099e0
mov byte [edx], 0
sub edx, dword [esp + 4]
add dword [eax + 0x80], edx
add esp, 0x70
pop esi
pop edi
pop ebx
pop ebp
ret 0x10