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

Disassembly:
sub esp, 0x578
push ebx
push ebp
push esi
mov esi, dword [esp + 0x58c]
push edi
mov edi, dword [esp + 0x58c]
xor ebx, ebx
mov ecx, edi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], ebx
mov edx, esi
mov eax, dword [ecx]
add ecx, 4
mov ebp, dword [esp + eax*4 + 0x4c]
lea eax, [esp + eax*4 + 0x4c]
inc ebp
dec edx
mov dword [eax], ebp
jne 0x4913e7
cmp dword [esp + 0x4c], esi
jne 0x49141f
mov ecx, dword [esp + 0x5a0]
mov edx, dword [esp + 0x5a4]
xor eax, eax
mov dword [ecx], ebx
mov dword [edx], ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x578
ret
mov esi, dword [esp + 0x5a4]
mov ecx, 1
lea eax, [esp + 0x50]
mov ebp, dword [esi]
mov dword [esp + 0x14], ebp
cmp dword [eax], ebx
jne 0x491442
inc ecx
add eax, 4
cmp ecx, 0xf
jbe 0x491435
cmp ebp, ecx
mov dword [esp + 0x10], ecx
jae 0x491450
mov dword [esp + 0x14], ecx
mov ebp, ecx
mov eax, 0xf
lea edx, [esp + 0x88]
cmp dword [edx], ebx
jne 0x491468
dec eax
sub edx, 4
cmp eax, ebx
jne 0x49145c
cmp ebp, eax
mov dword [esp + 0x2c], eax
jbe 0x491476
mov dword [esp + 0x14], eax
mov ebp, eax
mov dword [esi], ebp
mov esi, 1
shl esi, cl
cmp ecx, eax
jae 0x491495
lea edx, [esp + ecx*4 + 0x4c]
sub esi, dword [edx]
js 0x4914a1
inc ecx
add edx, 4
shl esi, 1
cmp ecx, eax
jb 0x491487
mov ecx, dword [esp + eax*4 + 0x4c]
sub esi, ecx
mov dword [esp + 0x44], esi
jns 0x4914b1
mov eax, 0xfffffffd
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x578
ret
add ecx, esi
mov dword [esp + 0x90], ebx
mov dword [esp + eax*4 + 0x4c], ecx
xor ecx, ecx
dec eax
je 0x4914d6
xor edx, edx
add ecx, dword [esp + edx + 0x50]
add edx, 4
dec eax
mov dword [esp + edx + 0x90], ecx
jne 0x4914c5
xor edx, edx
mov eax, dword [edi]
add edi, 4
cmp eax, ebx
je 0x4914f9
mov ecx, dword [esp + eax*4 + 0x8c]
lea eax, [esp + eax*4 + 0x8c]
mov dword [esp + ecx*4 + 0x108], edx
inc ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x590]
inc edx
cmp edx, eax
jb 0x4914d8
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x108]
xor edi, edi
mov dword [esp + 0x1c], eax
mov eax, ebp
neg eax
cmp edx, ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x8c], edi
mov dword [esp + 0x18], 0xffffffff
mov dword [esp + 0xcc], edi
mov dword [esp + 0x40], edi
jg 0x4917e7
lea ecx, [esp + edx*4 + 0x4c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx]
mov esi, ecx
dec ecx
test esi, esi
mov dword [esp + 0x34], ecx
je 0x4917c7
jmp 0x49156b
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
lea esi, [eax + ebp]
cmp edx, esi
jle 0x491693
inc ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x48], ecx
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x38]
add eax, ebp
sub edx, eax
inc ecx
add edi, ebp
cmp edx, ebp
mov dword [esp + 0x18], ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], edi
jbe 0x4915a4
mov edx, ebp
mov ebx, dword [esp + 0x10]
sub ebx, eax
mov eax, 1
mov ecx, ebx
shl eax, cl
cmp eax, dword [esp + 0x48]
jbe 0x4915e4
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
or ecx, 0xffffffff
sub ecx, edi
add eax, ecx
cmp ebx, edx
jae 0x4915e4
inc ebx
cmp ebx, edx
jae 0x4915e4
mov ecx, dword [esi + 4]
add esi, 4
shl eax, 1
cmp eax, ecx
jbe 0x4915e4
sub eax, ecx
inc ebx
cmp ebx, edx
jb 0x4915d1
mov esi, dword [esp + 0x5a8]
mov edi, 1
mov ecx, ebx
push 8
mov eax, dword [esi + 0x28]
shl edi, cl
lea edx, [edi + 1]
push edx
push eax
call dword [esi + 0x20]
add esp, 0xc
test eax, eax
je 0x49180f
mov edx, dword [esp + 0x5a0]
lea ecx, [eax + 8]
add eax, 4
mov dword [esp + 0x40], ecx
mov dword [edx], ecx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x5a0], eax
mov dword [eax], 0
lea esi, [edx*4]
test edx, edx
lea eax, [esp + esi + 0xcc]
mov dword [eax], ecx
je 0x491677
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
mov dword [esp + esi + 0x8c], ebp
mov esi, ecx
mov ecx, dword [esp + 0x3c]
mov eax, dword [eax - 4]
sub ecx, edx
mov byte [esp + 0x21], dl
shr ebp, cl
mov byte [esp + 0x20], bl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x24], esi
mov dword [eax + ebp*8], ecx
mov dword [eax + ebp*8 + 4], esi
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
cmp eax, edx
mov eax, dword [esp + 0x3c]
jg 0x49157f
mov ebx, dword [esp + 0x28]
mov cl, byte [esp + 0x10]
mov edx, dword [esp + 0x590]
sub cl, al
mov byte [esp + 0x21], cl
mov ecx, dword [esp + 0x1c]
lea edx, [esp + edx*4 + 0x108]
cmp ecx, edx
jb 0x4916ba
mov byte [esp + 0x20], 0xc0
jmp 0x49170a
mov ecx, dword [ecx]
mov edx, dword [esp + 0x594]
cmp ecx, edx
jae 0x4916db
cmp ecx, 0x100
sbb edx, edx
and edx, 0xffffffa0
add edx, 0x60
mov byte [esp + 0x20], dl
jmp 0x4916fb
sub ecx, edx
mov edx, dword [esp + 0x59c]
shl ecx, 2
mov dl, byte [ecx + edx]
add dl, 0x50
mov byte [esp + 0x20], dl
mov edx, dword [esp + 0x598]
mov ecx, dword [ecx + edx]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x1c]
add ecx, 4
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x10]
mov esi, 1
sub ecx, eax
mov edx, ebx
shl esi, cl
mov ecx, eax
shr edx, cl
cmp edx, edi
jae 0x49174c
mov ecx, dword [esp + 0x40]
lea ebx, [esi*8]
lea ecx, [ecx + edx*8]
mov ebp, dword [esp + 0x20]
add edx, esi
mov dword [ecx], ebp
mov ebp, dword [esp + 0x24]
mov dword [ecx + 4], ebp
add ecx, ebx
cmp edx, edi
jb 0x49172f
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
lea ecx, [edx - 1]
mov edx, 1
shl edx, cl
test ebx, edx
je 0x491766
xor ebx, edx
shr edx, 1
test ebx, edx
jne 0x49175e
mov ecx, dword [esp + 0x18]
xor ebx, edx
mov esi, 1
mov dword [esp + 0x28], ebx
lea edx, [esp + ecx*4 + 0x8c]
mov ecx, eax
shl esi, cl
mov ecx, dword [edx]
dec esi
and esi, ebx
cmp esi, ecx
je 0x4917aa
mov esi, dword [esp + 0x18]
sub eax, ebp
dec esi
mov ecx, eax
mov dword [esp + 0x18], esi
mov esi, 1
shl esi, cl
mov ecx, dword [edx - 4]
sub edx, 4
dec esi
and esi, ebx
cmp esi, ecx
jne 0x491789
mov ecx, dword [esp + 0x34]
mov edx, ecx
dec ecx
test edx, edx
mov dword [esp + 0x34], ecx
jne 0x491563
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
jmp 0x4917cb
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
inc edx
add ecx, 4
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x2c]
cmp edx, ecx
jle 0x49154c
test esi, esi
je 0x491802
cmp dword [esp + 0x2c], 1
je 0x491802
mov eax, 0xfffffffb
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x578
ret
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x578
ret
mov eax, dword [esp + 0x18]
test eax, eax
je 0x491828
mov eax, dword [esp + 0xcc]
push esi
push eax
call fcn.00491aa0
add esp, 8
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x578
ret