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

Disassembly:
push 0xffffffffffffffff
push 0x10e0e977
mov eax, dword fs:[0]
push eax
mov eax, 0x1c28
mov dword fs:[0], esp
call fcn.10dde6c0
push ebx
push ebp
push esi
xor ebx, ebx
push edi
push ebx
xor eax, eax
mov esi, ecx
push ebx
mov ecx, 1
mov dword [esp + 0x54], eax
push ebx
lea eax, [esp + 0x58]
xor edx, edx
mov dword [esp + 0x5c], ecx
xor edi, edi
xor ebp, ebp
push eax
mov ecx, esi
mov dword [esp + 0x64], edx
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
call fcn.10964580
test eax, eax
je 0x10965b30
cmp dword [esp + 0x60], 1
je 0x10965b42
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov dword [esi + 0x70], ecx
mov dword [esi + 0x74], edx
push str.Missing_compiler_directive_after_
call fcn.109b93d0
add esp, 4
jmp 0x10966173
lea eax, [esp + 0x70]
push str.Error
push eax
call fcn.109b8b60
add esp, 8
test eax, eax
jne 0x10965b6a
push str.Error_directive_encountered
call fcn.109b93d0
add esp, 4
jmp 0x10966173
mov eax, dword [esp + 0x60]
cmp eax, 1
je 0x10965b78
cmp eax, 2
jne 0x10965b96
lea ecx, [esp + 0x70]
push str.Call
push ecx
call fcn.109b8b60
add esp, 8
test eax, eax
je 0x10965fcd
mov eax, dword [esp + 0x60]
cmp eax, 1
je 0x10965ba0
cmp eax, 2
jne 0x10965bba
lea edx, [esp + 0x70]
push str.AlwaysCall
push edx
call fcn.109b8b60
add esp, 8
test eax, eax
je 0x10965fcd
push 0x10e55da4
lea ecx, [esp + 0x50]
call fcn.109599a0
test eax, eax
jne 0x10965f05
push str.AlwaysExec
lea ecx, [esp + 0x50]
call fcn.109599a0
test eax, eax
jne 0x10965f05
push str.ForceExec
lea ecx, [esp + 0x50]
call fcn.109599a0
test eax, eax
jne 0x10965f05
push 0x10e55d68
lea ecx, [esp + 0x50]
call fcn.109599a0
test eax, eax
je 0x10965eee
lea ecx, [esp + 0x1394]
call fcn.1095cf00
lea eax, [esp + 0x1394]
push eax
mov ecx, esi
call fcn.1095a350
test eax, eax
jne 0x10965c3e
push str.include:_missing_file_name
call fcn.109b93d0
add esp, 4
mov ecx, dword [esi + 0x10]
push ecx
push ebx
push ebx
push ebx
lea edx, [esp + 0x1448]
push edx
push ebx
push ecx
mov eax, esp
mov dword [esp + 0x30], esp
mov dword [eax], ebx
call fcn.109c2d40
push eax
mov eax, dword [0x10fab8e8]
mov ecx, dword [eax + 0x114]
push ecx
call fcn.1095ab50
mov edi, eax
add esp, 0x24
cmp edi, ebx
mov dword [esp + 0x14], edi
jne 0x10965c90
lea edx, [esp + 0x1438]
push edx
push str.include_file__s_not_found
call fcn.109b93d0
add esp, 8
push ebx
add edi, 0x38
push str.defaultproperties
mov ecx, edi
call fcn.10911720
mov ebp, eax
cmp ebp, 0xffffffff
jne 0x10965cb5
mov eax, dword [edi + 4]
cmp eax, ebx
je 0x10965cb3
lea ebp, [eax - 1]
jmp 0x10965cb5
xor ebp, ebp
mov edx, dword [esi + 0x70]
dec edx
mov dword [esp + 0x10], edx
js 0x10965d09
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 0x38]
mov ecx, dword [eax + 0x3c]
add eax, 0x38
mov dword [esp + 0x10], eax
mov dword [esp + 0x24], ecx
jmp 0x10965ce0
mov eax, dword [esp + 0x10]
lea esp, [esp]
cmp dword [esp + 0x24], ebx
je 0x10965cea
mov eax, dword [eax]
jmp 0x10965cef
mov eax, 0x10e43c3c
movzx eax, word [eax + edx*2]
push eax
mov ecx, esi
call fcn.1095a190
test eax, eax
jne 0x10965d04
dec edx
jns 0x10965cd5
jmp 0x10965d05
inc edx
mov dword [esp + 0x10], edx
push edx
mov edx, dword [esi + 0x14]
lea ecx, [esp + 0x38]
push ecx
mov ecx, dword [edx + 0x38]
add ecx, 0x38
call fcn.109116d0
mov eax, dword [esi + 0x70]
mov edx, dword [esi + 0x14]
push 0x7fffffff
inc eax
push eax
lea ecx, [esp + 0x48]
push ecx
mov ecx, dword [edx + 0x38]
add ecx, 0x38
mov dword [esp + 0x1c4c], ebx
call fcn.109298d0
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 0x38]
add ecx, 0x38
push 2
mov byte [esp + 0x1c44], 1
mov dword [ecx + 4], ebx
mov dword [ecx + 8], ebx
call fcn.109b8e40
mov edx, dword [esi + 0x14]
lea ecx, [esp + 0x34]
push ecx
mov ecx, dword [edx + 0x38]
add ecx, 0x38
call fcn.1090c7a0
push ebp
lea eax, [esp + 0x1c]
push eax
mov ecx, edi
call fcn.109116d0
mov ecx, dword [esi + 0x14]
mov ecx, dword [ecx + 0x38]
push eax
add ecx, 0x38
mov byte [esp + 0x1c44], 2
call fcn.1090c7a0
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c40], 1
call fcn.10902a90
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 0x38]
lea edx, [esp + 0x40]
push edx
add ecx, 0x38
call fcn.1090c7a0
mov ecx, dword [esi + 0x14]
mov eax, dword [ecx + 0x38]
mov ecx, dword [eax + 0x3c]
add eax, 0x38
cmp ecx, ebx
je 0x10965dce
mov eax, dword [eax]
jmp 0x10965dd3
mov eax, 0x10e43c3c
push eax
mov dword [esi + 0x68], eax
call fcn.109b8b10
mov dword [esi + 0x6c], eax
mov eax, dword [edi + 4]
add esp, 4
cmp eax, ebx
je 0x10965dec
dec eax
jmp 0x10965dee
xor eax, eax
cmp ebp, eax
jge 0x10965eaf
mov ecx, dword [esi + 0x14]
push ebx
push 0x10e46220
add ecx, 0x518
call fcn.10911720
mov ecx, dword [esi + 0x14]
mov edx, dword [ecx + 0x51c]
add ecx, 0x518
cmp edx, ebx
je 0x10965e20
dec edx
jmp 0x10965e22
xor edx, edx
sub edx, eax
push edx
lea edx, [esp + 0x2c]
push edx
call fcn.1090f590
lea ecx, [esp + 0x28]
call fcn.10902a90
push 0x7fffffff
inc ebp
push ebp
lea eax, [esp + 0x20]
push eax
mov ecx, edi
call fcn.109298d0
push ebx
push 0x10e55974
lea ecx, [esp + 0x20]
mov byte [esp + 0x1c48], 3
call fcn.10911720
push 0x7fffffff
push eax
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x24]
call fcn.109298d0
mov ecx, dword [esi + 0x14]
push eax
add ecx, 0x518
mov byte [esp + 0x1c44], 4
call fcn.1090c7a0
lea ecx, [esp + 0x28]
mov byte [esp + 0x1c40], 3
call fcn.10902a90
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c40], 1
call fcn.10902a90
mov ecx, dword [esp + 0x14]
cmp ecx, ebx
mov edx, dword [esp + 0x10]
mov dword [esi + 0x70], edx
je 0x10965ec5
mov eax, dword [ecx]
push 1
call dword [eax + 0xc]
lea ecx, [esp + 0x40]
mov byte [esp + 0x1c40], bl
call fcn.10902a90
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c40], 0xffffffff
call fcn.10902a90
jmp 0x1096619f
lea ecx, [esp + 0x70]
push ecx
push str.Unrecognized_compiler_directive__s
call fcn.109b93d0
add esp, 8
jmp 0x10966173
lea ecx, [esp + 0xaf0]
call fcn.1095cf00
lea edx, [esp + 0xaf0]
push edx
mov ecx, esi
call fcn.1095a350
test eax, eax
jne 0x10965f31
push str.Exec:_missing_command_line
call fcn.109b93d0
add esp, 4
cmp dword [esi + 0x90], ebx
jne 0x10965f4f
push str.ForceExec
lea ecx, [esp + 0x50]
call fcn.109599a0
test eax, eax
je 0x10966173
mov ecx, dword [0x10fab8e8]
mov eax, dword [ecx + 0x174]
mov edx, eax
shr edx, 1
lea edx, [edx + edx - 2]
xor edx, eax
and edx, 2
xor edx, eax
mov dword [ecx + 0x174], edx
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 0x1c]
mov edx, dword [0x10fab8e8]
mov dword [edx + 0x190], ecx
mov edx, dword [esi + 0x10]
mov ecx, dword [0x10fab8e8]
mov eax, dword [ecx]
push edx
lea edx, [esp + 0xb98]
push edx
call dword [eax + 0xd8]
mov eax, dword [0x10fab8e8]
mov dword [eax + 0x190], ebx
mov ecx, dword [0x10fab8e8]
mov eax, dword [ecx + 0x174]
mov edx, eax
shr edx, 1
lea edx, [edx + edx - 2]
xor edx, eax
and edx, 2
xor edx, eax
mov dword [ecx + 0x174], edx
jmp 0x10966173
lea ecx, [esp + 0xaf0]
call fcn.1095cf00
lea eax, [esp + 0xaf0]
push eax
mov ecx, esi
call fcn.1095a350
test eax, eax
jne 0x10965ff9
push str.Call:_missing_command_line
call fcn.109b93d0
add esp, 4
cmp dword [esi + 0x90], ebx
jne 0x10966017
push str.AlwaysCall
lea ecx, [esp + 0x50]
call fcn.109599a0
test eax, eax
je 0x10966173
mov ecx, dword [esi + 0x10]
push ecx
push ebx
push ebx
push ebx
lea edx, [esp + 0xba4]
push edx
push ebx
push ecx
mov eax, esp
mov dword [esp + 0x30], esp
mov dword [eax], ebx
call fcn.109c2d40
push eax
mov eax, dword [0x10fab8e8]
mov ecx, dword [eax + 0x114]
push ecx
call fcn.1095ab50
mov edi, eax
add esp, 0x24
cmp edi, ebx
je 0x10966155
mov eax, dword [0x10f43370]
lea edx, [esp + 0xb94]
push edx
push str.Calling__s
push 0x2f8
push eax
call fcn.109baec0
mov eax, dword [edi + 0x3c]
add esp, 0x10
cmp eax, ebx
je 0x10966084
mov ecx, dword [edi + 0x38]
mov dword [esp + 0x10], ecx
jmp 0x1096608c
mov dword [esp + 0x10], 0x10e43c3c
push ebx
push 0x100
lea edx, [esp + 0x8f8]
push edx
lea eax, [esp + 0x1c]
push eax
call fcn.109b9bd0
add esp, 0x10
test eax, eax
je 0x1096614c
nop
mov ecx, dword [0x10fab8e8]
mov eax, dword [ecx + 0x174]
mov edx, eax
shr edx, 1
lea edx, [edx + edx - 2]
xor edx, eax
and edx, 2
xor edx, eax
mov dword [ecx + 0x174], edx
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 0x1c]
mov edx, dword [0x10fab8e8]
mov dword [edx + 0x190], ecx
mov edx, dword [esi + 0x10]
mov ecx, dword [0x10fab8e8]
mov eax, dword [ecx]
push edx
lea edx, [esp + 0x8f4]
push edx
call dword [eax + 0xd8]
mov eax, dword [0x10fab8e8]
mov dword [eax + 0x190], ebx
mov ecx, dword [0x10fab8e8]
mov eax, dword [ecx + 0x174]
mov edx, eax
shr edx, 1
lea edx, [edx + edx - 2]
xor edx, eax
and edx, 2
push ebx
xor edx, eax
push 0x100
lea eax, [esp + 0x8f8]
mov dword [ecx + 0x174], edx
push eax
lea ecx, [esp + 0x1c]
push ecx
call fcn.109b9bd0
add esp, 0x10
test eax, eax
jne 0x109660b0
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx + 0xc]
mov ecx, dword [esi + 0x10]
lea eax, [esp + 0xb94]
push eax
push str.Macro_file__s_not_found
push 0x300
push ecx
call fcn.109baec0
add esp, 0x10
push ebx
mov ecx, esi
call fcn.1095a070
cmp ax, 0xd
je 0x1096618e
cmp ax, 0xa
je 0x1096618e
cmp ax, bx
jne 0x10966173
jmp 0x10966193
cmp ax, bx
jne 0x1096619f
mov edx, dword [esi + 0x78]
mov eax, dword [esi + 0x7c]
mov dword [esi + 0x70], edx
mov dword [esi + 0x74], eax
mov ecx, dword [esp + 0x1c38]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x1c34
ret