Function at 0x10042670
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1010
call fcn.102244a0
mov eax, dword [esp + 0x1018]
push ebx
push ebp
push esi
xor esi, esi
push edi
mov dword [eax], esi
mov ecx, dword [0x107ab964]
mov eax, dword [esp + 0x1024]
push esi
mov edx, dword [ecx]
push 0x8002
push eax
call dword [edx + 4]
mov edi, eax
cmp edi, 0xffffffff
je 0x1004294c
mov ecx, dword [0x107ab964]
push edi
mov edx, dword [ecx]
call dword [edx + 0x20]
mov ebp, eax
cmp ebp, esi
mov dword [esp + 0x1c], ebp
jge 0x100426dc
mov ecx, dword [0x107ab964]
push edi
mov eax, dword [ecx]
call dword [eax + 0x18]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1010
ret
mov edx, dword [0x107ab964]
lea ecx, [esp + 0x18]
push ecx
push edi
push edx
mov dword [esp + 0x24], esi
call fcn.10025680
add esp, 0xc
test eax, eax
je 0x10042940
mov eax, dword [esp + 0x18]
cmp eax, esi
jle 0x10042940
cmp ebp, eax
jl 0x10042940
mov eax, dword [0x107ab964]
push edi
push eax
call fcn.100100f0
add esp, 8
cmp eax, esi
jle 0x100426c3
cmp ebp, eax
jle 0x100426c3
lea ecx, [esp + 0x14]
push 1
lea edx, [esp + 0x24]
push ecx
push edx
push 0x1000
add eax, 0x300
push 0x1000
push eax
mov eax, dword [0x107ab964]
push ebp
push edi
push eax
call fcn.100253e0
add esp, 0x24
test eax, eax
je 0x10042940
mov ecx, dword [esp + 0x14]
cmp ecx, 0x300
jl 0x10042940
add ecx, 0xffffffd0
xor ebx, ebx
xor eax, eax
mov dword [esp + 0x10], esi
test ecx, ecx
jle 0x100427ed
mov esi, 0xe2a5
mov dl, 0xf7
cmp word [esp + eax + 0x20], 0xc681
jne 0x100427d2
cmp byte [esp + eax + 0x26], 0xa1
jne 0x100427d2
cmp byte [esp + eax + 0x2b], 0x2d
jne 0x100427d2
cmp dword [esp + eax + 0x30], 0x4bbd233
jne 0x100427d2
cmp dword [esp + eax + 0x34], 0xf7000000
jne 0x100427d2
cmp dword [esp + eax + 0x38], 0x368191f3
jne 0x100427d2
cmp word [esp + eax + 0x40], si
jne 0x100427d2
cmp byte [esp + eax + 0x42], dl
jne 0x100427d2
mov ebp, dword [esp + eax + 0x22]
cmp ebp, dword [esp + eax + 0x2c]
je 0x100427d9
mov ebp, dword [esp + 0x1c]
inc eax
cmp eax, ecx
jl 0x10042782
jmp 0x100427e9
mov ecx, dword [esp + eax + 0x22]
mov ebx, dword [esp + eax + 0x3c]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0x10]
cmp dword [esp + 0x18], esi
jg 0x100426c3
test ebx, ebx
je 0x100426c3
cmp ebp, esi
jle 0x100426c3
mov edx, ebp
sub edx, esi
cmp edx, 0x100
jg 0x1004284e
mov ecx, dword [0x107ab964]
push edi
mov eax, dword [ecx]
call dword [eax + 0x18]
mov ecx, dword [esp + 0x1028]
mov edx, dword [esp + 0x1024]
mov eax, dword [0x107ab964]
push ecx
push edx
push eax
call fcn.1002bac0
add esp, 0xc
neg eax
pop edi
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0x1010
ret
cmp esi, 0x1500
jl 0x10042940
cmp esi, 0x3000
jg 0x10042940
cmp esi, ebp
mov dword [esp + 0x14], 0
jge 0x10042910
mov eax, dword [0x107ab964]
lea ecx, [esp + 0x14]
push 1
lea edx, [esp + 0x24]
push ecx
push edx
push 0x1000
push 0x1000
push esi
push ebp
push edi
push eax
call fcn.100253e0
add esp, 0x24
test eax, eax
je 0x10042940
cmp esi, dword [esp + 0x10]
jne 0x100428c3
mov ecx, dword [esp + 0x20]
xor ecx, ebx
and ecx, 0x5a4d
cmp ecx, 0x5a4d
jne 0x100426c3
mov edx, dword [esp + 0x14]
xor eax, eax
lea ecx, [edx - 4]
test ecx, ecx
jl 0x100428db
xor dword [esp + eax + 0x20], ebx
add eax, 4
cmp eax, ecx
jle 0x100428d0
mov eax, dword [0x107ab964]
push edx
lea edx, [esp + 0x24]
push 0x1000
push edx
push esi
push edi
push eax
call fcn.10029d90
add esp, 0x18
test eax, eax
je 0x10042940
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x1004290c
add esi, eax
cmp esi, ebp
jl 0x10042876
mov esi, dword [esp + 0x10]
mov eax, dword [0x107ab964]
push esi
push edi
push eax
call fcn.10029b90
mov ecx, dword [0x107ab964]
add esp, 0xc
test eax, eax
je 0x10042946
mov eax, dword [ecx]
push edi
call dword [eax + 0x18]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x1010
ret
mov ecx, dword [0x107ab964]
mov edx, dword [ecx]
push edi
call dword [edx + 0x18]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1010
ret