Function at 0x775f10
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x18c
mov dword [esp + 0x20], eax
mov eax, ecx
sar eax, 0x1f
shr eax, 0x1e
add eax, ecx
and eax, 0xfffffffc
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x78], edx
mov dword [esp + 0x44], 5
mov dword [esp + 0x60], 1
mov edx, dword [eax]
mov ebx, dword [eax + 8]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x34], 1
sub eax, 1
mov dword [esp + 0x38], 1
test edx, edx
jne 0x7760bb
mov dword [esp + 0x50], 4
mov dword [esp + 0x54], 2
mov dword [esp + 0x58], 2
mov eax, dword [esp + 0x44]
mov esi, ebx
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x18]
shl eax, 4
mov edi, dword [eax + 0xe73f94]
mov eax, ebx
mov edx, dword [esp + edx*4 + 0x74]
sar eax, 3
mov eax, dword [ecx + eax]
mov ecx, ebx
and ecx, 7
bswap eax
shl eax, cl
shr eax, 0xfd
lea eax, [edi + eax*4]
mov dword [esp + 0x2c], edx
movsx edx, word [eax]
mov dword [esp + 0x4c], edx
movsx edx, word [eax + 2]
test edx, edx
jns 0x77603b
mov ecx, dword [esp + 0x18]
lea esi, [ebx + 3]
mov ebx, edx
mov eax, esi
neg ebx
sar eax, 3
mov edx, ebx
neg edx
mov eax, dword [ecx + eax]
mov ecx, esi
and ecx, 7
bswap eax
shl eax, cl
mov ecx, edx
shr eax, cl
add eax, dword [esp + 0x4c]
lea eax, [edi + eax*4]
movsx edx, word [eax]
mov dword [esp + 0x4c], edx
movsx edx, word [eax + 2]
test edx, edx
jns 0x77603b
mov ecx, dword [esp + 0x18]
add esi, ebx
mov eax, esi
sar eax, 3
mov eax, dword [ecx + eax]
mov ecx, esi
and ecx, 7
bswap eax
shl eax, cl
mov ecx, edx
shr eax, cl
add eax, dword [esp + 0x4c]
lea eax, [edi + eax*4]
movsx edx, word [eax]
mov dword [esp + 0x4c], edx
movsx edx, word [eax + 2]
mov ebp, dword [esp + 0x4c]
lea ebx, [edx + esi]
mov ecx, dword [esp + 0x20]
sub ebp, 1
cmp ebp, 0xffffffff
mov dword [ecx + 8], ebx
jne 0x776186
mov ebp, dword [esp + 0x54]
test ebp, ebp
je 0x776088
mov ebx, dword [esp + 0x2c]
xor esi, esi
mov eax, dword [esp + 0x50]
add esi, 1
mov dword [esp], ebx
mov dword [esp + 4], 0
mov dword [esp + 8], eax
call sub.msvcrt.dll_memset
add ebx, dword [esp + 0x68]
cmp dword [esp + 0x58], esi
ja 0x776063
mov ecx, dword [esp + 0x60]
cmp dword [esp + 0x38], ecx
jle 0x776274
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
mov ebx, dword [ecx + 8]
mov dword [esp + 0x18], eax
add dword [esp + 0x60], 1
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x44]
sub eax, 1
test edx, edx
je 0x775f77
cmp dword [esp + 0x34], eax
je 0x77615a
mov edx, dword [esp + 0x18]
mov eax, ebx
mov ecx, ebx
sar eax, 3
and ecx, 7
add ebx, 1
movzx eax, byte [edx + eax]
shl eax, cl
mov ecx, dword [esp + 0x20]
test al, al
mov dword [ecx + 8], ebx
js 0x776115
mov ecx, dword [esp + 0x44]
mov eax, 1
mov edx, eax
add ecx, 4
shr ecx, 1
shl edx, cl
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x50], edx
add ecx, 3
shr ecx, 1
shl eax, cl
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
jmp 0x775f8f
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + ecx*4 + 0x74]
mov dword [esp + edx*4 + 0x78], eax
add edx, 1
mov esi, dword [esp + ecx*4 + 0x74]
test byte [esp + 0x44], 1
mov eax, dword [esp + 0x1c]
jne 0x77613c
mov eax, 1
mov ecx, dword [esp + 0x44]
shr ecx, 1
add ecx, 1
shl eax, cl
lea eax, [esi + eax]
mov dword [esp + edx*4 + 0x78], eax
add edx, 1
mov dword [esp + 0x38], edx
jmp 0x7760a3
sub dword [esp + 0x44], 1
jne 0x7761a6
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x50], 4
mov dword [esp + 0x54], 2
mov dword [esp + 0x58], 2
mov dword [esp + 0x34], ecx
jmp 0x775f8f
test ebp, ebp
setg byte [esp + 0x27]
jle 0x7761b3
cmp dword [esp + 0x44], 3
jbe 0x7761b3
add esp, 0x18c
mov eax, 0xffffffff
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x38]
mov dword [esp + 0x34], eax
jmp 0x7760c5
mov edx, dword [esp + 0x18]
mov eax, ebx
mov ecx, ebx
mov esi, dword [0xe74054]
and ecx, 7
sar eax, 3
mov eax, dword [edx + eax]
bswap eax
shl eax, cl
shr eax, 0xf8
lea eax, [esi + eax*4]
movsx edx, word [eax + 2]
movsx ecx, word [eax]
test edx, edx
mov dword [esp + 0x3c], ecx
jns 0x776221
mov ecx, dword [esp + 0x18]
add ebx, 8
mov edi, edx
mov eax, ebx
neg edi
sar eax, 3
mov edx, edi
neg edx
mov eax, dword [ecx + eax]
mov ecx, ebx
and ecx, 7
bswap eax
shl eax, cl
mov ecx, edx
shr eax, cl
add eax, dword [esp + 0x3c]
lea eax, [esi + eax*4]
movsx edx, word [eax]
mov dword [esp + 0x3c], edx
movsx edx, word [eax + 2]
test edx, edx
js 0x776486
mov ecx, dword [esp + 0x20]
lea ebx, [edx + ebx]
test ebp, ebp
mov dword [ecx + 8], ebx
jne 0x776281
mov edi, dword [esp + 0x54]
test edi, edi
je 0x776088
mov ebx, dword [esp + 0x2c]
xor esi, esi
mov eax, dword [esp + 0x50]
add esi, 1
mov edx, dword [esp + 0x3c]
mov dword [esp], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], edx
call sub.msvcrt.dll_memset
add ebx, dword [esp + 0x68]
cmp dword [esp + 0x58], esi
ja 0x776241
mov ecx, dword [esp + 0x60]
cmp dword [esp + 0x38], ecx
jg 0x776096
add esp, 0x18c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0x44]
mov eax, ebx
sar eax, 3
lea edx, [ebp*4]
mov ecx, dword [ecx*4 + 0xbafc58]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x18]
mov esi, dword [ecx + eax]
mov eax, edx
mov ecx, ebx
neg eax
and ecx, 7
bswap esi
shl esi, cl
mov ecx, eax
mov eax, dword [esp + 0x20]
shr esi, cl
cmp byte [esp + 0x27], 0
lea edx, [ebx + edx]
mov dword [eax + 8], edx
je 0x776307
mov edx, dword [esp + 0x4c]
xor ebx, ebx
mov edi, dword [esp + 0x44]
lea edx, [edx*4 - 8]
add edi, 1
mov dword [esp + 0x14], edx
movzx ecx, byte [esp + 0x14]
mov eax, esi
mov edx, ebx
shl edx, 4
sub dword [esp + 0x14], 4
shr eax, cl
mov ecx, edi
and eax, 0xf
add edx, eax
shl edx, cl
mov dword [esp + ebx*4 + 0x174], edx
add ebx, 1
cmp ebp, ebx
jg 0x7762dd
mov edx, dword [esp + 0x3c]
mov eax, ebp
shl eax, 7
mov esi, dword [esp + 0x54]
sub edx, eax
mov eax, edx
sar edx, 0x1f
add edx, eax
and eax, 0xffff
shl edx, 0x10
or edx, eax
test esi, esi
mov dword [esp + 0x48], edx
je 0x776088
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x64], 0
shr eax, 2
mov dword [esp + 0x30], ecx
mov edi, ecx
mov dword [esp + 0x5c], eax
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x40], 0
test ebx, ebx
je 0x776462
mov esi, dword [esp + 0x48]
cmp byte [esp + 0x27], 0
mov ebx, esi
je 0x7763ab
mov esi, dword [esp + 0x48]
xor ecx, ecx
mov ebx, esi
lea esi, [esi]
mov eax, dword [esp + ecx*4 + 0x174]
add ecx, 1
mov edx, dword [edi + eax*4]
xor edx, 0x80808080
mov eax, edx
and edx, 0xff00ff
and eax, 0xff00ff00
add ebx, edx
shr eax, 8
add esi, eax
cmp ebp, ecx
jg 0x776380
test esi, 0xff00ff00
je 0x7763ee
lea edx, [esi + 0x7f007f00]
mov eax, edx
not eax
shr eax, 0xf
shr esi, 0xf
and eax, 0x10001
and esi, 0x10001
or eax, 0x1000100
or esi, 0x1000100
sub eax, 0x10001
sub esi, 0x10001
or eax, edx
and esi, 0xff00ff
and esi, eax
test ebx, 0xff00ff00
je 0x776431
lea edx, [ebx + 0x7f007f00]
mov eax, edx
not eax
shr eax, 0xf
shr ebx, 0xf
and eax, 0x10001
and ebx, 0x10001
or eax, 0x1000100
or ebx, 0x1000100
sub eax, 0x10001
sub ebx, 0x10001
or eax, edx
and ebx, 0xff00ff
and ebx, eax
mov edx, dword [esp + 0x40]
shl esi, 8
add edi, 4
mov ecx, dword [esp + 0x2c]
or ebx, esi
mov eax, dword [esp + 0x5c]
mov dword [ecx + edx*4], ebx
add edx, 1
cmp edx, eax
mov dword [esp + 0x40], edx
jne 0x776364
mov ecx, dword [esp + 0x30]
lea ecx, [ecx + edx*4]
mov dword [esp + 0x30], ecx
add dword [esp + 0x64], 1
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x58], eax
jbe 0x776088
mov edx, dword [esp + 0x68]
add dword [esp + 0x2c], edx
mov edi, dword [esp + 0x30]
jmp 0x776350
mov ecx, dword [esp + 0x18]
add ebx, edi
mov eax, ebx
sar eax, 3
mov eax, dword [ecx + eax]
mov ecx, ebx
and ecx, 7
bswap eax
shl eax, cl
mov ecx, edx
shr eax, cl
add eax, dword [esp + 0x3c]
lea eax, [esi + eax*4]
movsx edx, word [eax]
mov dword [esp + 0x3c], edx
movsx edx, word [eax + 2]
jmp 0x776221