Function at 0x109fa20
Capabilities:
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 esi, esp
mov edi, ecx
mov dword [esi + 0xdc], 0
mov dword [esi + 0xd8], 0
mov dword [esi + 0xd4], 0
mov dword [esi + 0xd0], 0
mov dword [esi + 0xcc], 0
mov dword [esi + 0xc0], 0
mov dword [esi + 0xc4], 2
mov dword [esi + 0xc8], 1
push 0xc904973f
push dword [0x10cbaa0]
call fcn.010bfaf0
add esp, 8
lea ecx, [esi + 0x3c]
lea edx, [esi + 0xc0]
push ecx
push edx
push dword [ebp + 0xc]
push dword [ebp + 8]
call eax
test eax, eax
jne 0x109fb4d
push 0x39be051d
push dword [0x10cbaa0]
call fcn.010bfaf0
add esp, 8
mov dword [esi + 0xc], eax
push 0x847b02a2
push dword [0x10cbaa0]
call fcn.010bfaf0
add esp, 8
mov dword [esi + 0x14], eax
push 0x2e775759
push dword [0x10cbaa0]
call fcn.010bfaf0
add esp, 8
mov dword [esi + 0x10], eax
mov ebx, dword [esi + 0x3c]
jmp 0x109fb03
mov ebx, dword [ebx + 0x1c]
test ebx, ebx
je 0x109fb35
push dword [ebx + 0xc]
push dword [ebx + 8]
push dword [ebx + 4]
call dword [esi + 0xc]
mov dword [edi], eax
cmp eax, 0xffffffff
je 0x109fb00
push dword [ebx + 0x10]
push dword [ebx + 0x18]
push eax
call dword [esi + 0x14]
test eax, eax
je 0x109fb35
push dword [edi]
call dword [esi + 0x10]
mov dword [edi], 0xffffffff
jmp 0x109fb00
push 0x18c354a9
push dword [0x10cbaa0]
call fcn.010bfaf0
add esp, 8
push dword [esi + 0x3c]
call eax
xor ebx, ebx
cmp dword [edi], 0xffffffff
je 0x10a01c5
mov dword [esi + 0x28], edi
mov edi, dword [ebp + 0x10]
nop
nop
cmp byte [edi + ebx], 0
lea ebx, [ebx + 1]
jne 0x109fb60
mov eax, edi
not eax
mov dword [esi + 0x14], eax
xor edx, edx
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [eax + edx], 0
lea edx, [edx + 1]
jne 0x109fb80
add ebx, edi
dec ebx
mov dword [esi + 0x10], ebx
and dword [esi + 0x14], ebx
mov ebx, eax
not ebx
mov dword [esi + 0xc], ebx
xor ebx, ebx
nop
nop
nop
nop
nop
cmp byte [ecx + ebx], 0
lea ebx, [ebx + 1]
jne 0x109fba0
xor dword [esi + 0x10], edi
add edx, eax
dec edx
mov dword [esi + 0x18], edx
mov edx, dword [esi + 0xc]
and edx, dword [esi + 0x18]
mov dword [esi + 0xc], edx
mov edx, dword [esi + 0x18]
xor edx, eax
add edx, dword [esi + 0x10]
mov dword [esi + 0x10], edx
mov edx, dword [esi + 0x14]
add edx, dword [esi + 0xc]
lea eax, [ecx + ebx]
dec eax
mov ebx, ecx
not ebx
and ebx, eax
xor eax, ecx
add eax, dword [esi + 0x10]
add edx, edx
sub edx, eax
lea eax, [edx + ebx*2]
add eax, 0x93
and eax, 0xfffffffc
call fcn.01088610
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0xc], eax
mov esp, eax
mov dword [esi + 0x40], 0x7f7e49b0
mov dword [esi + 0x44], 0x999f9a7c
mov dword [esi + 0x48], 0x73b0bc99
mov dword [esi + 0x4c], 0x6d2a5653
mov word [esi + 0x50], 0xa180
mov dword [esi + 0x52], 0
lea eax, [esi + 0x40]
mov edx, 0x23
nop
nop
nop
nop
nop
nop
movzx ecx, byte [eax]
mov ebx, ecx
not ebx
or ebx, edx
add ebx, ecx
inc ebx
or ecx, edx
not ecx
or ecx, ebx
add cl, 0xb4
mov byte [eax], cl
inc eax
dec edx
cmp edx, 0xd
jne 0x109fc30
mov dword [esi + 0x1c], 0x410a383d
mov byte [esi + 0x20], 0x60
mov word [esi + 0x21], 0
mov byte [esi + 0x23], 0
mov eax, 0xec91cee9
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esi + eax + 0x136e3133]
xor ecx, eax
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
add cl, 0x72
mov byte [esi + eax + 0x136e3133], cl
inc eax
cmp eax, 0xec91cef1
jne 0x109fc70
movzx edx, byte [esi + 0x1c]
mov eax, dword [esi + 0xc]
test dl, dl
je 0x109fcbb
lea ebx, [esi + 0x1d]
mov eax, dword [esi + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [ebx]
inc ebx
test dl, dl
jne 0x109fcb0
mov byte [eax], 0
movzx edx, byte [edi]
test dl, dl
je 0x109fcdb
inc edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [edi]
inc edi
test dl, dl
jne 0x109fcd0
mov byte [eax], 0
movzx ecx, byte [esi + 0x40]
test cl, cl
je 0x109fcfb
lea edx, [esi + 0x41]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x109fcf0
mov byte [eax], 0
mov edx, dword [ebp + 8]
movzx ecx, byte [edx]
test cl, cl
je 0x109fd1b
inc edx
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x109fd10
mov byte [eax], 0x3a
mov dword [esi + 0x40], 0x475b2f2d
mov dword [esi + 0x44], 0x4f53bb4f
mov dword [esi + 0x48], 0xc46e774d
mov dword [esi + 0x4c], 0x38c53331
mov dword [esi + 0x50], 0xcb3b3e37
mov dword [esi + 0x54], 0x301d5351
mov dword [esi + 0x58], 0x20233332
mov dword [esi + 0x5c], 0x292924d0
mov dword [esi + 0x60], 0x273b791e
mov dword [esi + 0x64], 0x2f33db2f
mov dword [esi + 0x68], 0x78442d
mov dword [esi + 0x6c], 0x5f1211
mov dword [esi + 0x70], 0x14091715
mov dword [esi + 0x74], 0xef1f121b
mov dword [esi + 0x78], 0xf6033655
mov dword [esi + 0x7c], 0x14225d3a
mov dword [esi + 0x80], 0x4709f70d
mov dword [esi + 0x84], 0x1a0620fb
mov dword [esi + 0x88], 0xd4cf061d
mov dword [esi + 0x8c], 0xd8c7f8f9
mov dword [esi + 0x90], 0xc9ddf9d8
mov dword [esi + 0x94], 0xe8d9e4dc
mov dword [esi + 0x98], 0x898bc4f7
mov dword [esi + 0x9c], 0xaee5e0f3
mov dword [esi + 0xa0], 0xf8e8e4f3
mov dword [esi + 0xa4], 0xeee5eae7
mov dword [esi + 0xa8], 0xd2c4a41c
mov dword [esi + 0xac], 0xd8d32222
mov dword [esi + 0xb0], 0x9686efda
mov dword [esi + 0xb4], 0xb6b4b0eb
mov word [esi + 0xb8], 0xa1b6
mov dword [esi + 0xba], 0
xor ecx, ecx
nop
movzx edx, byte [esi + ecx + 0x40]
lea edi, [ecx + 0x36]
mov ebx, 0xc9
sub ebx, ecx
or edi, edx
not edx
or edx, ebx
and edx, edi
add dl, 0xf2
mov byte [esi + ecx + 0x40], dl
lea edx, [ecx + ecx]
and edx, 2
mov edi, edx
and edi, ecx
xor edx, ecx
xor edx, 1
lea ecx, [edx + edi*2]
cmp ecx, 0x7e
jb 0x109fe30
inc eax
mov edx, dword [ebp + 0xc]
movzx ecx, byte [edx]
test cl, cl
je 0x109fe8b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x109fe80
mov byte [eax], 0
movzx ecx, byte [esi + 0x40]
test cl, cl
je 0x109feab
lea edx, [esi + 0x41]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x109fea0
mov byte [eax], 0
mov ecx, eax
mov ebx, dword [esi + 0xc]
xor ecx, ebx
mov edi, ebx
not edi
and edi, eax
add edi, edi
sub edi, ecx
push 0xd0026952
push dword [0x10cbaa0]
call fcn.010bfaf0
add esp, 8
push 0
push edi
push ebx
mov edi, dword [esi + 0x28]
push dword [edi]
call eax
cmp eax, 0xffffffff
jne 0x109ff24
cmp dword [edi], 0xffffffff
je 0x109ff24
push 0x59ea2086
push dword [0x10cbaa0]
call fcn.010bfaf0
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x10cbaa0]
call fcn.010bfaf0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
xor ebx, ebx
jmp 0x10a01c5
cmp eax, 0xffffffff
je 0x10a001e
push 0x400
call fcn.01088730
add esp, 4
mov dword [esi + 0x1c], eax
mov dword [esi + 0x20], eax
add eax, 0x400
mov dword [esi + 0x24], eax
lea eax, [esi + 0x1c]
mov ecx, edi
push eax
call fcn.010a0450
mov bl, 1
test al, al
je 0x10a01b0
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov ebx, ecx
sub ebx, eax
cmp ecx, dword [esi + 0x24]
jne 0x10a0097
mov dword [esi + 0x10], ecx
mov dword [esi + 0xc], eax
lea eax, [ebx + 1]
mov edi, ebx
shr edi, 1
add edi, ebx
cmp edi, eax
ja 0x109ff85
mov edi, eax
push edi
call fcn.01088730
add esp, 4
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x10a0089
mov dword [esi + 0x30], edi
cmp eax, ecx
mov dword [esi + 0x14], ebx
mov edx, dword [esi + 0x10]
mov dword [esi + 0x18], eax
jbe 0x10a0025
cmp edx, eax
jbe 0x10a0025
test ebx, ebx
je 0x10a0075
mov edx, dword [esi + 0x14]
lea eax, [ecx + edx]
dec eax
mov ecx, dword [esi + 0x18]
add ecx, edx
dec ecx
mov edi, edx
and edi, 3
je 0x109ffe0
neg edi
xor edx, edx
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x109ffcd
add eax, edx
add ecx, edx
add edx, dword [esi + 0x14]
mov edi, dword [esi + 0xc]
sub edi, dword [esi + 0x10]
cmp edi, 0xfffffffc
ja 0x10a0075
neg edx
xor edi, edi
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
add edi, 0xfffffffc
cmp edx, edi
jne 0x109fff3
jmp 0x10a0075
xor ebx, ebx
jmp 0x10a01c5
mov edx, ecx
mov ecx, ebx
shr ecx, 2
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, ebx
xor ecx, 3
mov edx, ebx
or edx, 0xfffffffc
and edx, ecx
lea edi, [eax + edx]
add edx, dword [esi + 0xc]
mov ecx, ebx
xor ecx, 0xfffffffc
mov eax, ebx
or eax, 3
and eax, ecx
mov ecx, eax
shr ecx, 1
mov ebx, edx
mov dword [esi + 0xc], edi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test byte [esi + 0x14], 1
je 0x10a0075
and eax, 0xfffffffe
movzx ecx, byte [edx + eax]
mov edx, dword [esi + 0xc]
mov byte [edx + eax], cl
push dword [esi + 0x1c]
call fcn.01088740
add esp, 4
mov ebx, dword [esi + 0x14]
mov edi, dword [esi + 0x30]
mov eax, dword [esi + 0x18]
mov dword [esi + 0x1c], eax
lea ecx, [eax + ebx]
mov dword [esi + 0x20], ecx
add edi, eax
mov dword [esi + 0x24], edi
mov byte [eax + ebx], 0
mov eax, dword [esi + 0x1c]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x20]
inc eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x40], 0x595e5fac
mov dword [esi + 0x44], 0xbabcb8b9
mov dword [esi + 0x48], 0x8682848c
mov byte [esi + 0x4c], 0xd0
mov dword [esi + 0x4d], 0
mov dword [esi + 0x50], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esi + ecx + 0x40]
lea edx, [ecx + 0x746f1557]
mov edi, edx
and edi, ebx
add edi, edi
neg edi
lea eax, [ecx + edi]
add eax, 0x746f1557
add eax, ebx
lea edi, [eax + eax]
not edi
add edi, eax
and edi, edx
mov eax, edi
and eax, 0x7d
mov edx, edi
or edx, 0xfd
inc edx
imul edx, eax
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
sub edx, edi
add edx, ecx
add dl, bl
add dl, 0xa4
mov byte [esi + ecx + 0x40], dl
mov edx, ecx
and ecx, 0x1e
mov eax, ecx
xor eax, 0x1e
xor ecx, 0xfffffffe
or ecx, eax
and edx, 1
not ecx
add ecx, edx
cmp ecx, 0x14
jb 0x10a00e0
movzx edx, byte [esi + 0x40]
mov edi, dword [esi + 0xc]
mov ecx, edi
mov dword [esi + 0x10], edi
test dl, dl
mov ecx, dword [esi + 0x28]
je 0x10a019e
lea eax, [esi + 0x40]
mov dword [esi + 0x14], eax
mov ebx, edi
mov eax, edi
mov dword [esi + 0x10], edi
mov eax, dword [esi + 0x14]
jmp 0x10a017a
movzx edx, byte [eax]
test dl, dl
mov ecx, dword [esi + 0x28]
je 0x10a019e
mov dh, byte [ebx]
test dh, dh
je 0x10a01a4
inc ebx
inc eax
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x10]
inc eax
cmp dh, dl
je 0x10a0194
mov ecx, eax
mov dword [esi + 0x10], eax
mov ebx, eax
mov eax, dword [esi + 0x14]
je 0x10a0170
lea eax, [esi + 0x40]
jmp 0x10a0170
cmp dword [esi + 0x10], 0
jne 0x10a01e7
push 0x3ea
call fcn.0109f760
xor ebx, ebx
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x10a01c5
cmp eax, dword [esi + 0x20]
je 0x10a01c5
push eax
call fcn.01088740
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
cmp dl, dh
mov ecx, dword [esi + 0x28]
je 0x10a01b0
mov edx, edi
mov ebx, dword [esi + 0x18]
sub edx, ebx
je 0x10a020d
mov dword [esi + 0xc], edi
mov eax, ebx
xor ecx, ecx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edi, dword [esi + 0xc]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ecx, dword [esi + 0x28]
add dword [esi + 0x20], edx
lea eax, [esi + 0x1c]
push eax
call fcn.010a0450
test al, al
je 0x10a01ae
mov ebx, eax
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x20]
mov ecx, edx
sub ecx, eax
cmp edx, dword [esi + 0x24]
jne 0x10a03ba
mov dword [esi + 0x38], edx
mov dword [esi + 0x18], eax
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
mov dword [esi + 0x10], ecx
add edx, ecx
cmp edx, eax
ja 0x10a0247
mov edx, eax
mov dword [esi + 0x30], edx
push edx
call fcn.01088730
add esp, 4
mov ecx, dword [esi + 0x18]
test ecx, ecx
je 0x10a03a6
cmp eax, ecx
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x34], eax
jbe 0x10a02cf
cmp dword [esi + 0x38], eax
jbe 0x10a02cf
test ecx, ecx
je 0x10a0398
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x18]
add ecx, eax
dec ecx
mov dword [esi + 0x2c], ecx
mov ecx, dword [esi + 0x34]
lea edx, [ecx + eax]
dec edx
mov ecx, eax
and ecx, 3
mov dword [esi + 0x14], ecx
je 0x10a0333
neg dword [esi + 0x14]
xor ecx, ecx
mov dword [esi + 0xc], edx
mov edx, dword [esi + 0x2c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edx + ecx]
mov edi, dword [esi + 0xc]
mov byte [edi + ecx], al
dec ecx
cmp dword [esi + 0x14], ecx
jne 0x10a02b0
add edx, ecx
mov dword [esi + 0x2c], edx
mov edi, dword [esi + 0xc]
add edi, ecx
add ecx, dword [esi + 0x10]
jmp 0x10a0339
shr ecx, 2
mov edx, dword [esi + 0x18]
mov dword [esi + 0xc], edx
mov edi, eax
mov edx, dword [esi + 0xc]
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov edi, dword [esi + 0x10]
mov ecx, edi
xor ecx, 3
mov edx, edi
or edx, 0xfffffffc
and edx, ecx
add eax, edx
mov dword [esi + 0xc], eax
add edx, dword [esi + 0x18]
mov ecx, edi
xor ecx, 0xfffffffc
or edi, 3
and edi, ecx
mov dword [esi + 0x18], edi
mov ecx, edi
shr ecx, 1
mov edi, edx
mov dword [esi + 0x14], edx
mov edi, dword [esi + 0xc]
mov eax, dword [esi + 0x14]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test byte [esi + 0x10], 1
je 0x10a0398
mov eax, dword [esi + 0x18]
and eax, 0xfffffffe
movzx ecx, byte [edx + eax]
mov edx, dword [esi + 0xc]
mov byte [edx + eax], cl
jmp 0x10a0398
mov edi, edx
mov edx, eax
mov ecx, eax
mov dword [esi + 0xc], edi
mov eax, dword [esi + 0x18]
sub eax, dword [esi + 0x38]
cmp eax, 0xfffffffc
mov edx, dword [esi + 0x2c]
ja 0x10a0398
neg ecx
xor edi, edi
mov dword [esi + 0x14], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edx + edi]
mov ecx, dword [esi + 0xc]
mov byte [ecx + edi], al
movzx eax, byte [edx + edi - 1]
mov ecx, dword [esi + 0xc]
mov byte [ecx + edi - 1], al
movzx eax, byte [edx + edi - 2]
mov ecx, dword [esi + 0xc]
mov byte [ecx + edi - 2], al
movzx eax, byte [edx + edi - 3]
mov ecx, dword [esi + 0xc]
mov byte [ecx + edi - 3], al
mov ecx, dword [esi + 0x14]
add edi, 0xfffffffc
cmp ecx, edi
jne 0x10a0360
push dword [esi + 0x1c]
call fcn.01088740
add esp, 4
mov eax, dword [esi + 0x34]
mov dword [esi + 0x1c], eax
mov ecx, dword [esi + 0x10]
lea edx, [eax + ecx]
mov dword [esi + 0x20], edx
mov edx, dword [esi + 0x30]
add edx, eax
mov dword [esi + 0x24], edx
mov byte [eax + ecx], 0
mov eax, dword [esi + 0x1c]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x20]
inc eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x20], eax
mov word [esi + 0x40], 0x8b85
mov byte [esi + 0x42], 0x92
mov dword [esi + 0x43], 0
mov ecx, 0xb36e629c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esi + ecx + 0x4c919da4]
mov eax, ecx
and eax, edx
add eax, eax
sub edx, eax
add edx, ecx
mov eax, edx
not eax
and eax, 0xd
and edx, 0xf2
sub edx, eax
inc dl
mov byte [esi + ecx + 0x4c919da4], dl
inc ecx
cmp ecx, 0xb36e62a3
jne 0x10a03f0
xor ecx, ecx
mov edi, dword [esi + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [edi + ecx]
mov dh, byte [esi + ecx + 0x40]
test dl, dl
je 0x10a01e0
inc ecx
cmp dl, dh
je 0x10a0430
jmp 0x10a01e0