Function at 0x409300
Capabilities:
Authenticate hmac
Contain obfuscated stackstrings
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf0
mov edi, dword [ebp + 8]
mov dword [esp + 0x7c], ecx
add edi, dword [ecx + 0x60]
mov dword [esp + 0x80], 0x9f969463
mov dword [esp + 0x84], 0x5c9c9b81
mov dword [esp + 0x88], 0x989c927a
mov dword [esp + 0x8c], 0x8397514c
mov dword [esp + 0x90], 0x93919282
mov dword [esp + 0x94], 0x8b8a9289
mov dword [esp + 0x98], 0xb24f854f
mov dword [esp + 0x9c], 0xa2abafa4
mov dword [esp + 0xa0], 0x180a16b2
mov word [esp + 0xa4], 0x904
mov dword [esp + 0xa6], 0
mov dword [esp + 0xaa], 0
mov dword [esp + 0xae], 0
mov dword [esp + 0xb2], 0
mov byte [esp + 0xb6], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x36
ja 0x40940e
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x80]
lea eax, [ecx + edx]
add eax, 0x4b59985
add ecx, 0x4b59985
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x5d
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x80], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x37
jb 0x4093d0
mov dword [esp + 0xdc], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0x5b506c7a
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1f
ja 0x4094c2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx edx, byte [esp + ecx + 0xc0]
lea ecx, [eax + 0x2c6804c]
mov esi, ecx
and esi, edx
xor ecx, edx
add eax, 0x4c
and eax, edx
add eax, esi
sub ecx, eax
lea eax, [ecx + esi*2]
add al, 0xec
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0xc0], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x20
jb 0x409480
mov dword [esp + 0x10], 0x6004c4d
mov dword [esp + 0x14], 0x202303c
mov dword [esp + 0x18], 0xffa003d
mov dword [esp + 0x1c], 0xa070e03
mov dword [esp + 0x20], 0xc2f70302
mov dword [esp + 0x24], 0xf8d59f99
mov dword [esp + 0x28], 0xf5ff0df6
mov dword [esp + 0x2c], 0xf6dab008
mov dword [esp + 0x30], 0x10ed1113
mov dword [esp + 0x34], 0xe8ef11ed
mov dword [esp + 0x38], 0xedaad3e6
mov dword [esp + 0x3c], 0xa2e31fe3
mov dword [esp + 0x40], 0xd226d0d4
mov dword [esp + 0x44], 0xd6d895ef
mov dword [esp + 0x48], 0x99e7dcd5
mov dword [esp + 0x4c], 0xdad2d4da
mov dword [esp + 0x50], 0xc582fa82
mov dword [esp + 0x54], 0xc9c3c9cd
mov dword [esp + 0x58], 0xf6cfc4c9
mov word [esp + 0x5c], 0xad8e
mov word [esp + 0x6a], 0
mov dword [esp + 0x66], 0
mov dword [esp + 0x62], 0
mov dword [esp + 0x5e], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 0x5b
ja 0x4095e1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + 0x70]
and edx, ecx
add eax, ecx
add eax, 0x70
add edx, edx
sub eax, edx
add al, 0xf0
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x10], al
mov eax, dword [esp + 0xc]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
cmp eax, 0x5c
jb 0x4095a0
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x10]
mov edx, edi
test cl, cl
je 0x40960b
lea esi, [esp + 0x11]
mov edx, edi
nop
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 0x409600
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x40962b
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 0x409620
mov byte [edx], 0
movzx eax, byte [esp + 0xc0]
test al, al
je 0x40965b
lea ecx, [esp + 0xc1]
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 0x409650
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x80]
test al, al
mov dword [esp + 0x78], edi
je 0x40968b
lea ecx, [esp + 0x81]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409680
mov byte [edx], 0
mov ecx, esi
shr ecx, 2
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, esi
and esi, 0xfffffffc
add esi, edx
mov eax, ecx
not eax
or eax, 0xfffffffc
add eax, ecx
add ebx, eax
inc ebx
mov eax, ecx
and eax, 3
mov ecx, eax
shr ecx, 1
mov dword [esp + 0x74], ebx
mov edi, esi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ebx, dword [ebp + 0x14]
test bl, 1
je 0x4096e1
mov ecx, ebx
and ecx, 2
xor eax, 1
and eax, ebx
mov edi, dword [esp + 0x74]
movzx ecx, byte [edi + ecx]
mov byte [esi + eax], cl
mov dword [esp + 0x10], 0x4e4f936d
mov dword [esp + 0x14], 0x5a5e2826
mov dword [esp + 0x18], 0x2a5f2c2c
mov dword [esp + 0x1c], 0x2c19211c
mov dword [esp + 0x20], 0x19182421
mov dword [esp + 0x24], 0x7d83a4d9
mov word [esp + 0x28], 0x7b85
mov byte [esp + 0x2a], 0x72
mov dword [esp + 0x2b], 0
mov byte [esp + 0x2f], 0
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x80]
cmp eax, 0x1f
mov esi, dword [esp + 0x78]
ja 0x409784
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x80]
add al, 0x6c
xor al, byte [esp + ecx + 0x10]
add al, 0xc
mov ecx, dword [esp + 0x80]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0x80]
mov eax, dword [esp + 0x80]
cmp eax, 0x20
jb 0x409750
add edx, ebx
movzx eax, byte [esp + 0x10]
test al, al
je 0x4097ab
lea ecx, [esp + 0x11]
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 0x4097a0
mov byte [edx], 0
sub edx, esi
mov eax, dword [esp + 0x7c]
add dword [eax + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10