Function at 0x101964d0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x349c
call fcn.102244a0
mov ecx, dword [esp + 0x34a0]
mov edx, dword [0x107ab964]
push ebx
push ebp
push esi
lea eax, [esp + 0x48]
push edi
push eax
push ecx
push edx
call fcn.1000fc50
add esp, 0xc
test eax, eax
je 0x10196a2e
mov ebx, dword [esp + 0x34bc]
mov esi, dword [esp + 0x34b4]
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov edi, dword [esp + 0x34b0]
lea eax, [esp + 0x14]
push eax
push esi
push edi
call fcn.101dd400
add esp, 0xc
test eax, eax
je 0x10196a2e
cmp ebx, 0x21de
jne 0x10196548
mov dword [esp + 0x14], 0xf000
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x18]
push 0
lea edx, [esp + 0xb0]
push ecx
mov ecx, dword [0x107ab964]
push edx
push 0x1000
push 0x1000
push eax
push esi
push edi
push ecx
call fcn.100253e0
add esp, 0x24
test eax, eax
je 0x10196a2e
cmp dword [esp + 0x18], 0x1000
jne 0x10196a2e
mov eax, dword [esp + 0xb4]
mov edi, dword [esp + 0xac]
mov ebp, eax
xor ebp, edi
and ebp, 0xffff
xor ebp, eax
xor ebp, 0x840f3d81
xor eax, eax
cmp ebx, 0x2041
je 0x101965c7
cmp ebx, 0x21dd
je 0x101965c7
cmp ebx, 0x21de
jne 0x101965ce
xor dword [esp + eax + 0xac], eax
mov edi, dword [esp + eax + 0xac]
add eax, 4
xor edi, ebp
cmp eax, 0xffc
mov dword [esp + eax + 0xa8], edi
jb 0x101965af
xor eax, eax
mov ecx, 0x900
lea edi, [esp + 0x10ac]
push eax
lea edx, [esp + 0x10b0]
push 0x60
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0xb8]
push 0x1000
push eax
call fcn.10024c10
add esp, 0x14
cmp eax, 2
jl 0x10196a2e
mov eax, dword [esp + 0x111c]
cmp eax, 0xe3
je 0x1019664c
mov ecx, dword [esp + 0x10]
inc ecx
cmp ecx, 0xf
mov dword [esp + 0x10], ecx
jl 0x1019651a
cmp eax, 0xe3
jne 0x10196a2e
cmp dword [esp + 0x10], 0xf
jge 0x10196a2e
mov ecx, dword [esp + 0x1114]
mov edx, dword [esp + 0x110c]
lea esi, [edx + ecx]
mov ecx, dword [esp + 0x1132]
add esi, ecx
cmp esi, 0xff0
ja 0x10196a2e
test esi, esi
jle 0x10196a2e
mov eax, dword [esp + esi + 0xb5]
push 8
xor eax, 0x1d8b0040
push eax
call fcn.10018570
add esp, 8
mov ecx, eax
cmp ebx, 0x21dd
mov dword [esp + 0x1c], ecx
je 0x101966b2
cmp ebx, 0x21de
jne 0x101966ea
mov eax, dword [esp + esi + 0xaf]
push 8
xor eax, 0x35ff0040
push eax
call fcn.100185b0
mov edx, dword [esp + esi + 0xbc]
mov ecx, eax
xor edx, 0x50000000
and ecx, 0xffffff
and edx, 0xff000000
add esp, 8
or ecx, edx
mov dword [esp + 0x1c], ecx
cmp esi, 0xe00
mov eax, esi
jae 0x1019670e
mov ebx, dword [esp + eax + 0xac]
add eax, 4
xor ebx, ecx
cmp eax, 0xe00
mov dword [esp + eax + 0xa8], ebx
jb 0x101966f4
mov ecx, 0x900
xor eax, eax
lea edi, [esp + 0x10ac]
lea edx, [esp + esi + 0xac]
rep stosd dword es:[edi], eax
xor edi, edi
mov ecx, 0x1000
push edi
lea eax, [esp + 0x10b0]
push 0x60
sub ecx, esi
push eax
push ecx
push edx
call fcn.10024c10
add esp, 0x14
cmp eax, 0xa
jl 0x10196a2e
add eax, 0xfffffffb
xor esi, esi
cmp eax, edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], eax
jle 0x10196a2e
mov ebx, dword [esp + 0x68]
lea eax, [esp + 0x118d]
cmp edi, 2
jge 0x101968c1
mov ecx, edi
sub ecx, 0
je 0x10196856
dec ecx
jne 0x101968a6
mov edx, dword [eax - 0xd1]
cmp edx, 0xf8
je 0x101967a5
cmp edx, 0x118
jne 0x101968a6
cmp dword [eax - 0xc0], 0x8c
jne 0x101968a6
cmp dword [eax - 0x71], 6
jne 0x101968a6
cmp dword [eax - 0x60], 0x8c
jne 0x101968a6
cmp dword [eax - 0x11], 6
jne 0x101968a6
cmp dword [eax], 0x8c
jne 0x101968a6
mov ecx, dword [eax - 0xb3]
cmp ecx, dword [eax - 0x53]
jne 0x101968a6
cmp ecx, dword [eax + 0x6d]
jne 0x101968a6
cmp dword [eax - 0xab], 0x8d
jne 0x101968a6
cmp dword [eax - 0x4b], 0x8d
jne 0x101968a6
cmp dword [eax + 0x15], 0x8d
jne 0x101968a6
cmp edx, 0x118
mov edi, 2
jne 0x1019684f
mov ecx, dword [eax - 0xa6]
mov edx, dword [esp + 0x10]
sub ecx, ebx
cmp edx, ecx
jne 0x10196a2e
mov esi, dword [eax + 0x1a]
sub esi, ebx
sub esi, 0xc
jmp 0x101968a6
mov esi, dword [eax + 0x1a]
sub esi, ebx
jmp 0x101968a6
cmp dword [eax - 0xd1], 0x37
jne 0x101968a6
cmp dword [eax - 0xc0], 0x8d
jne 0x101968a6
cmp dword [eax - 0xab], 0x8f
jne 0x101968a6
cmp byte [eax - 0xa6], 1
jne 0x101968a6
cmp dword [eax - 0x71], 0xe4
jne 0x101968a6
cmp dword [eax - 0x11], 0x1b0
jne 0x101968a1
cmp byte [eax - 0x1d], 0xff
jne 0x101968a1
mov ecx, dword [eax + 5]
sub ecx, ebx
mov dword [esp + 0x10], ecx
mov edi, 1
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
inc ecx
add eax, 0x60
cmp ecx, edx
mov dword [esp + 0x20], ecx
jl 0x10196770
cmp edi, 2
jne 0x10196a2e
test esi, esi
je 0x10196a2e
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1019691d
sub eax, dword [esp + 0x14]
cmp eax, 0x100
jbe 0x10196a2e
mov ecx, dword [esp + 0x18]
lea edx, [eax + 4]
cmp ecx, edx
jbe 0x10196a2e
mov eax, dword [esp + eax + 0xac]
sub eax, ebx
mov dword [esp + 0x10], eax
je 0x10196a2e
mov ecx, dword [esp + 0x84]
add ecx, 0x20000
cmp eax, ecx
jae 0x10196a2e
mov ecx, dword [esp + 0x34b4]
lea edx, [esp + 0x18]
mov edi, esi
push 0
lea eax, [esp + 0x2c]
push edx
mov edx, dword [esp + 0x34b8]
push eax
mov eax, dword [0x107ab964]
push 0x24
shr esi, 2
shl esi, 2
push 0x24
push esi
push ecx
push edx
push eax
sub edi, esi
call fcn.100253e0
add esp, 0x24
test eax, eax
je 0x10196a2e
cmp dword [esp + 0x18], 0x24
jne 0x10196a2e
mov ecx, dword [esp + 0x34bc]
mov edx, dword [esp + 0x14]
cmp ecx, 0x2041
je 0x1019698c
cmp ecx, 0x21dd
je 0x1019698c
cmp ecx, 0x21de
jne 0x101969a8
sub esi, edx
cmp esi, 0x100
jbe 0x10196a2e
cmp esi, 0x1000
jae 0x10196a2e
jmp 0x101969ac
mov esi, dword [esp + 0x1c]
xor eax, eax
cmp ecx, 0x2041
je 0x101969c6
cmp ecx, 0x21dd
je 0x101969c6
cmp ecx, 0x21de
jne 0x101969d3
mov ebx, dword [esp + eax + 0x28]
xor ebx, esi
add esi, 4
mov dword [esp + eax + 0x28], ebx
mov ebx, dword [esp + eax + 0x28]
add eax, 4
xor ebx, ebp
cmp eax, 0x24
mov dword [esp + eax + 0x24], ebx
jl 0x101969ae
mov eax, dword [esp + 0x34b8]
test eax, eax
je 0x10196a2e
lea esi, [esp + edi + 0x28]
mov ecx, 8
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 8]
mov edi, dword [eax]
add ecx, edi
mov dword [eax + 0x14], ebp
add ecx, edx
mov dword [eax + 0x18], ecx
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x10196a1e
mov dword [eax + 0x14], 0xffffffff
mov dword [eax + 0x1c], ecx
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x349c
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x349c
ret