Function at 0x10128b43
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, ecx
mov byte [ebp - 1], 0
mov eax, dword [ebx]
mov dword [ebp - 0x20], eax
mov ax, word [edi + 0x3b0]
mov word [ebp - 6], ax
mov word [ebp - 0xc], ax
mov eax, dword [ebp + 0x10]
movsx eax, word [eax + 0xc]
mov dword [ebp - 0x24], eax
mov eax, dword [edi]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x101b0250]
mov ecx, edi
call esi
mov edx, dword [ebp - 0x24]
cmp eax, edx
mov ecx, dword [edi + 0x358]
cmovb edx, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x24], edx
test ecx, ecx
je 0x10128abd
cmp dword [ebp + 0xc], edx
ja 0x10129001
movsx eax, word [edi + 0x2e]
cmp eax, 9
ja case.0x10128ab6.5
movzx eax, byte [eax + 0x10129044]
jmp dword [eax*4 + 0x10129030]
cmp dword [ebp + 0xc], 1
ja 0x10129001
jmp 0x10128aa2
mov ecx, edi
call fcn.10129dc0
movsx ecx, word [edi + 0x2c]
sub ecx, 1
je 0x10128b08
sub ecx, 7
je 0x10128ae7
sub ecx, 8
jne case.0x10128ab6.5
cmp word [edi + 0x3b0], 0
mov ecx, edi
mov eax, dword [ebx]
push eax
jne 0x10128fe2
call fcn.1012b810
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp dword [edi + 0x338], 0
jne 0x10128b2c
cmp dword [edi + 0x33c], 0
jne 0x10128b2c
push dword [ebx]
mov ecx, edi
call fcn.10129e40
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push eax
push dword [ebx]
mov ecx, edi
call fcn.1012a2a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov byte [ebp - 1], 1
test ecx, ecx
je 0x10128c9a
cmp word [ebp - 6], 1
jne 0x10128b63
push ebx
mov ecx, edi
call fcn.1012a1b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
movsx eax, word [edi + 0x2c]
imul eax, dword [edi + 0x28]
mov ecx, dword [edi]
mov esi, dword [ecx + 0x14]
mov ecx, esi
cdq
and edx, 7
lea ebx, [edx + eax]
movsx eax, word [edi + 0x20]
sar ebx, 3
mov dword [ebp - 8], eax
call dword [0x101b0250]
mov ecx, edi
call esi
mov ecx, dword [ebp - 8]
cmp eax, ecx
cmovl ecx, eax
mov eax, dword [edi + 0x24]
sub eax, dword [edi + 0x384]
cmp word [edi + 0x2c], 0x10
mov dword [ebp - 8], ecx
mov dword [ebp - 0xc], eax
jne 0x10128c5a
cmp dword [edi + 0x338], 0
je 0x10128c5a
cmp dword [edi + 0x3c4], 0
jne 0x10128be3
mov eax, ebx
cdq
push edx
push eax
call fcn.10044a40
add esp, 8
mov dword [edi + 0x3c4], eax
test eax, eax
je 0x10129006
mov eax, dword [ebp - 0xc]
xor ecx, ecx
mov dword [ebp - 0x30], ecx
cmp dword [ebp - 8], ecx
jle case.0x10128ab6.5
mov edx, dword [ebp + 8]
mov esi, dword [edx + ecx*4]
mov dword [ebp - 0x34], 0
test eax, eax
jle 0x10128c48
mov ecx, dword [edi + 8]
push ebx
push dword [edi + 0x3c4]
call fcn.10045540
cmp ebx, eax
jne 0x10129023
xor ecx, ecx
test ebx, ebx
jle 0x10128c33
nop
mov eax, dword [edi + 0x3c4]
mov al, byte [ecx + eax]
add ecx, 2
mov byte [esi], al
inc esi
cmp ecx, ebx
jl 0x10128c20
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0x34], eax
cmp eax, dword [ebp - 0xc]
jl 0x10128c02
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp + 8]
inc ecx
mov dword [ebp - 0x30], ecx
cmp ecx, dword [ebp - 8]
jl 0x10128bf4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
xor esi, esi
test ecx, ecx
jle case.0x10128ab6.5
imul eax, ebx
mov dword [ebp - 0xc], eax
nop word [eax + eax]
mov ecx, dword [edi + 8]
push eax
mov eax, dword [ebp + 8]
push dword [eax + esi*4]
call fcn.10045540
cmp dword [ebp - 0xc], eax
jne 0x10129023
mov eax, dword [ebp - 0xc]
inc esi
cmp esi, dword [ebp - 8]
jl 0x10128c70
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov esi, dword [ebp + 0x10]
mov ebx, 1
mov dword [ebp - 0x2c], 1
mov dword [ebp - 0x10], ebx
movzx eax, word [esi + 0x18]
cmp ax, 0x10
je 0x10128cdb
cmp ax, 0x20
jne 0x10128cf9
cmp dword [edi + 0x338], 0
mov ebx, 4
mov dword [ebp - 0x2c], 4
mov dword [ebp - 0x10], ebx
je 0x10128cf9
mov ebx, 1
jmp 0x10128cf6
cmp dword [edi + 0x338], 0
mov ebx, 2
mov eax, 1
mov dword [ebp - 0x2c], 2
cmovne ebx, eax
mov dword [ebp - 0x10], ebx
cmp dword [edi + 0x3dc], 0xffffffff
mov cl, byte [edi + 0x360]
mov byte [ebp - 0x18], 0xff
je 0x10128d23
mov ecx, edi
call fcn.1012ba60
cmp byte [ebp - 1], 0
mov al, byte [eax + 0x24]
mov byte [ebp - 0x18], al
mov cl, al
je 0x10128d23
not cl
mov eax, dword [esi + 0x14]
imul eax, dword [esi + 0x10]
imul eax, ebx
imul eax, dword [ebp - 0x1c]
push eax
movzx eax, cl
push eax
push dword [ebp - 0x20]
call sub.VCRUNTIME140.dll_memset
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x24], eax
jbe case.0x10128ab6.5
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x14], eax
nop word [eax + eax]
mov ebx, dword [edi + 0x3dc]
mov dword [ebp - 0x38], eax
cmp ebx, 0xffffffff
je 0x10128e01
test ebx, ebx
js 0x1012900b
mov ecx, dword [edi + 0x3d0]
mov eax, 0x6bca1af3
sub ecx, dword [edi + 0x3cc]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jae 0x1012900b
mov ecx, dword [ebp - 0x14]
imul ebx, ebx, 0x4c
add ebx, dword [edi + 0x3cc]
mov eax, dword [ebx + 0x14]
movzx eax, word [ecx + eax]
cmp ax, 0xffff
jl case.0x10128ab6.5
jne 0x10128de4
mov ecx, edi
call fcn.10129dc0
test eax, eax
jne 0x10128de4
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebp - 0x14]
add eax, ecx
add ecx, 8
push 1
mov dword [ebp - 0x14], ecx
mov ecx, dword [edi + 8]
push dword [eax + 4]
call fcn.10045780
push 1
lea eax, [ebp - 0xc]
mov ecx, edi
push eax
push esi
call fcn.101287a0
mov ax, word [ebp - 0xc]
mov dword [ebp - 0x38], 0
mov word [ebp - 6], ax
mov eax, dword [edi]
mov ebx, dword [ebp - 0x30]
push ebx
mov esi, dword [eax + 0x18]
lea eax, [ebp - 0x48]
push eax
mov ecx, esi
call dword [0x101b0250]
mov ecx, edi
call esi
lea ecx, [ebp - 0x48]
mov esi, dword [eax + 4]
call sym.AIDE.dll_public:_void___thiscall_AIDE::AIDEDimension::destructor_void_
cmp esi, 2
jne 0x10128e34
cmp byte [ebp - 0x18], 0xff
mov byte [ebp - 0x28], 1
jne 0x10128e38
mov byte [ebp - 0x28], 0
cmp word [ebp - 6], 1
jne 0x10128f4f
cmp byte [ebp - 1], 0
je 0x10128e52
mov byte [ebp - 2], 0xff
cmp esi, 2
je 0x10128e56
mov byte [ebp - 2], 0
mov esi, dword [ebp + 0x10]
mov eax, dword [esi + 0x10]
sub eax, dword [edi + 0x384]
mov dword [ebp - 0x40], eax
mov eax, 0
mov dword [ebp - 0x3c], eax
je 0x10128f84
mov ecx, dword [esi + 0x10]
imul ecx, dword [ebp - 0x38]
add ecx, eax
mov eax, dword [edi + 0x3b4]
movzx esi, word [eax + ecx*2]
mov ecx, dword [edi + 8]
push esi
push dword [edi + 0x3bc]
call fcn.10045540
cmp esi, eax
jne 0x10129023
mov esi, dword [ebp + 0x10]
mov eax, dword [esi + 0x14]
push eax
push eax
push dword [edi + 0x3c4]
push dword [edi + 0x3bc]
call fcn.1012c3c0
mov edx, dword [esi + 0x14]
xor ecx, ecx
add esp, 0x10
cmp byte [ebp - 0x28], cl
je 0x10128f12
movzx eax, byte [ebp - 0x18]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, qword [0x101b22c8]
test edx, edx
jle 0x10128f3d
mov dl, byte [ebp - 2]
nop
mov eax, dword [edi + 0x3c4]
mov esi, dword [ebp - 0x20]
mov al, byte [ecx + eax]
inc ecx
xor al, dl
movzx eax, al
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
mov byte [ebx + esi], al
mov esi, dword [ebp + 0x10]
add ebx, dword [ebp - 0x1c]
cmp ecx, dword [esi + 0x14]
jl 0x10128ee0
jmp 0x10128f3d
test edx, edx
jle 0x10128f3d
mov dl, byte [ebp - 2]
nop dword [eax]
mov eax, dword [edi + 0x3c4]
mov esi, dword [ebp - 0x20]
mov al, byte [ecx + eax]
inc ecx
xor al, dl
mov byte [ebx + esi], al
mov esi, dword [ebp + 0x10]
add ebx, dword [ebp - 0x1c]
cmp ecx, dword [esi + 0x14]
jl 0x10128f20
mov eax, dword [ebp - 0x3c]
inc eax
mov dword [ebp - 0x3c], eax
cmp eax, dword [ebp - 0x40]
jb 0x10128e73
jmp 0x10128f84
cmp byte [ebp - 1], 0
je 0x10128f5e
cmp esi, 2
jne 0x10128f5e
mov al, 1
jmp 0x10128f60
xor al, al
push dword [ebp - 0x18]
mov esi, dword [ebp + 0x10]
mov ecx, edi
push dword [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x10]
push eax
push dword [ebp - 0x2c]
imul eax, dword [ebp - 0x1c]
push dword [ebp - 0x34]
push eax
push esi
push dword [ebp - 0x20]
call fcn.1012b650
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
inc eax
add ecx, dword [ebp - 0x10]
add dword [ebp - 0x14], 8
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], ecx
cmp eax, dword [ebp - 0x24]
jb 0x10128d60
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp word [ebp - 6], 1
jne 0x10128ff0
cmp dword [edi + 0x340], 0
je 0x10128fcb
push ebx
mov ecx, edi
call fcn.1012a450
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
test ecx, ecx
mov ecx, edi
je 0x10128fe0
push ebx
call fcn.1012a1b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push dword [ebx]
call fcn.1012a0a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push ebx
mov ecx, edi
call fcn.1012b390
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
call fcn.100e9e10
call fcn.100451e0
push 0x1a
lea ecx, [ebp - 0x50]
call fcn.1004fac0
push 0x101f5474
lea eax, [ebp - 0x50]
push eax
call sub.VCRUNTIME140.dll__CxxThrowException
mov ecx, edi
call fcn.10128610
call fcn.100ed150
nop
leave
mov dl, byte [edx]
adc byte [ebx - 0x75], al
adc dl, byte [eax]
stosb byte es:[edi], al
invalid