Function at 0x40df40
Capabilities:
Authenticate hmac
Contain obfuscated stackstrings
Encode data using xor
Get common file path
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xcf8
mov eax, dword [0x448d14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc8], 0x5b9fb376
mov dword [esp + 0xcc], 0
mov byte [esp + 0xd0], 0
mov dword [esp + 0x200], 0xc8dcc27a
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xc8], al
movzx eax, byte [esp + 0xc9]
mov ecx, eax
not ecx
or ecx, 0xf2
or eax, 0xc8dcc20d
and eax, ecx
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xc9], al
movzx eax, byte [esp + 0xca]
mov ecx, eax
not ecx
or ecx, 0xf1
or eax, 0xc8dcc20e
and eax, ecx
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xca], al
movzx eax, byte [esp + 0xcb]
mov ecx, eax
not ecx
or ecx, 0xf0
or eax, 0xc8dcc20f
and eax, ecx
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xcb], al
movzx eax, byte [esp + 0xcc]
mov ecx, eax
not ecx
or ecx, 0xef
or eax, 0xc8dcc210
and eax, ecx
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xcc], al
movzx eax, byte [esp + 0xcd]
mov ecx, eax
not ecx
or ecx, 0xee
or eax, 0xc8dcc211
and eax, ecx
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xcd], al
movzx eax, byte [esp + 0xce]
mov ecx, eax
not ecx
or ecx, 0xed
or eax, 0xc8dcc212
and eax, ecx
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xce], al
movzx eax, byte [esp + 0xcf]
mov ecx, eax
not ecx
or ecx, 0xec
or eax, 0xc8dcc213
and eax, ecx
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xcf], al
movzx eax, byte [esp + 0xd0]
mov ecx, eax
not ecx
or ecx, 0xeb
or eax, 0xc8dcc214
and eax, ecx
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
mov ecx, eax
xor ecx, 0x54
and eax, 0x2b
add eax, eax
sub eax, ecx
mov byte [esp + 0xd0], al
mov eax, dword [str.LPnhqo__dldpnyjvwnon]
mov dword [esp + 0x20], eax
mov dword [esp + 0x200], 0x70382829
mov dword [esp + 0x204], 0x382d2a3c
mov dword [esp + 0x208], 0x384d3624
mov dword [esp + 0x20c], 0x38252431
mov dword [esp + 0x210], 0x297e3e3f
mov dword [esp + 0x214], 0x93632f39
mov dword [esp + 0x218], 0xcf868d8c
mov dword [esp + 0x21c], 0x579bc5cd
mov dword [esp + 0x220], 0
mov dword [esp + 0x223], 0
xor ecx, ecx
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], ecx
movzx ebx, byte [esp + esi + 0x200]
mov eax, esi
xor eax, 0xe324f8e8
mov ecx, dword [esp + 4]
and ecx, 0x50
lea edi, [eax + ecx]
inc edi
mov eax, ebx
xor eax, 0x28157bc9
mov ecx, ebx
or ecx, 0x36
and ecx, eax
mov eax, ebx
and eax, 0xffffffc9
or eax, 0x52608024
xor eax, ecx
xor eax, 0xad9f7fdb
lea edx, [eax + eax]
not edx
add edx, eax
mov ecx, eax
and ecx, edi
lea eax, [ecx + ecx]
not eax
add eax, ecx
mov ecx, edi
not ecx
or edx, ecx
or ecx, ebx
sub edi, ebx
add edi, ecx
and edi, edx
and edi, eax
not edi
mov dword [esp + 0x30], edi
mov eax, dword [esp + 0x30]
mov edx, eax
xor edx, 0x3602ce5f
mov edi, edx
and edi, eax
mov ebx, edi
or ebx, 2
mov ecx, edi
and ecx, 2
imul ebx, ecx
xor ecx, 2
and edi, 0xfffffffd
imul edi, ecx
add edi, ebx
xor eax, 0xc9fd31a0
and eax, edi
mov ecx, eax
or ecx, 2
mov ebx, eax
and ebx, 2
imul ecx, ebx
and eax, 0xfffffffc
xor ebx, 2
imul ebx, eax
add ebx, ecx
mov ecx, dword [esp + 4]
xor edi, edx
mov eax, edi
not eax
and eax, ebx
not ebx
and ebx, edi
sub eax, ebx
mov byte [esp + esi + 0x200], al
inc esi
add ecx, 2
cmp esi, 0x27
jne 0x40e1f0
movzx eax, byte [esp + 0x200]
lea edx, [esp + 0xc74]
test al, al
je 0x40e2eb
lea ecx, [esp + 0x201]
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40e2e0
mov byte [edx], 0
mov ecx, dword [esp + 0x20]
movzx eax, byte [ecx]
test al, al
je 0x40e30b
inc ecx
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40e300
mov byte [edx], 0
movzx eax, byte [esp + 0xc8]
test al, al
je 0x40e33b
lea ecx, [esp + 0xc9]
nop
nop
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 0x40e330
mov byte [edx], 0
mov ecx, dword [esp + 0x1c]
movzx eax, byte [ecx]
test al, al
je 0x40e35b
inc ecx
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40e350
mov dword [esp + 0x20], edx
mov byte [edx], 0
mov dword [esp + 0x200], 0x8375854b
mov dword [esp + 0x204], 0x8f7c8170
mov dword [esp + 0x208], 0x8b7e8d65
mov dword [esp + 0x20c], 0x97bb8976
mov dword [esp + 0x210], 0x9313954a
mov dword [esp + 0x214], 0x9f7b9162
mov dword [esp + 0x218], 0x9bbc9d58
mov dword [esp + 0x21c], 0xa7689975
mov dword [esp + 0x220], 0xa350a556
mov dword [esp + 0x224], 0xaf4da155
mov dword [esp + 0x228], 0xab50ad41
mov dword [esp + 0x22c], 0xb759a95d
mov dword [esp + 0x230], 0xb385b544
mov dword [esp + 0x234], 0xbf83b14a
mov dword [esp + 0x238], 0xbb45bd47
mov dword [esp + 0x23c], 0x478bb943
mov dword [esp + 0x240], 0x43b545ac
mov dword [esp + 0x244], 0x4fb341bc
mov dword [esp + 0x248], 0x4bb74d7d
mov dword [esp + 0x24c], 0x57bc49b4
mov dword [esp + 0x250], 0x53a655bd
mov dword [esp + 0x254], 0x5fa151bf
mov dword [esp + 0x258], 0x5bb75db2
mov dword [esp + 0x25c], 0x674b59b6
mov dword [esp + 0x260], 0x63646570
mov word [esp + 0x26c], 0
mov dword [esp + 0x268], 0
mov dword [esp + 0x264], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
not ecx
movzx ebx, byte [esp + eax + 0x200]
mov dword [esp + 4], ebx
or ecx, 0xffffffbe
mov edx, eax
and edx, 0x3e
xor edx, 0xa26ed3f
and edx, ecx
mov esi, eax
and esi, 0x40
sub esi, edx
mov edi, esi
and edi, ebx
mov ebx, edi
not ebx
mov ecx, edi
and ecx, 0x73
mov edx, ebx
and ebx, 0x7bacaa8c
or ebx, ecx
and edx, 2
mov ecx, edi
and ecx, 2
xor edi, 2
sub edi, edx
add edi, 2
imul edi, ecx
xor ecx, 2
or ecx, ebx
xor ecx, 0x84535571
lea ebx, [ecx + ecx]
not ebx
add ebx, ecx
imul ebx, edx
add edi, ebx
add esi, dword [esp + 4]
sub esi, edi
mov dword [esp + 0xc8], esi
mov ecx, dword [esp + 0xc8]
add cl, 0xb9
mov byte [esp + eax + 0x200], cl
inc eax
cmp eax, 0x6e
jne 0x40e4a0
mov dword [esp + 0xc8], 0x3353316f
mov dword [esp + 0xcc], 0x37af35a4
mov word [esp + 0xd0], 0x2928
mov dword [esp + 0xd2], 0
mov dword [esp + 0xd6], 0
mov word [esp + 0xda], 0
mov edx, 0x28
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], edx
movzx eax, byte [esp + edx + 0xa0]
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 4]
and esi, eax
mov edi, esi
not edi
mov ebx, edi
or ebx, 2
lea ecx, [ebx + ebx]
not ecx
add ecx, ebx
mov ebx, edi
and ebx, 2
mov eax, ebx
not eax
and eax, ecx
imul eax, ebx
mov edx, ecx
and edx, ebx
or ecx, ebx
imul ecx, edx
and edi, 0xbb50bc43
mov edx, esi
and esi, 0x3c
or esi, edi
and edx, 2
or esi, edx
xor esi, 0xbb50bc41
imul esi, edx
add esi, ecx
add esi, eax
neg esi
mov eax, dword [esp + 4]
add eax, esi
add eax, 0x9d89aaff
mov edx, dword [esp + 4]
mov ecx, eax
mov esi, dword [esp + 0x1c]
and ecx, esi
xor eax, esi
lea eax, [eax + ecx*2]
inc eax
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x30]
mov eax, ecx
not eax
and eax, 0x74
and ecx, 0x8b
sub ecx, eax
add cl, 0x5c
mov byte [esp + edx + 0xa0], cl
inc edx
cmp edx, 0x3c
jne case.default.0x40e665
lea eax, [esp + 0xc74]
mov ebx, dword [esp + 0x20]
sub ebx, eax
lea ecx, [esp + 0x1c8]
lea edx, [esp + 0xc4]
lea edi, [esp + 0x200]
lea esi, [esp + 0xc8]
push ecx
push edx
push ebx
push eax
push edi
push esi
push 0x44e838
call fcn.0040c980
add esp, 0x1c
movzx eax, al
jmp dword [eax*4 + 0x4499c8]
out 0x40, al
add byte [eax - 0xdffbf1a], al