Function at 0x1006e610
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg
Hash data with crc32
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6c
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov dword [ebp - 0xc], edx
mov eax, dword [ebx + 0x126b0]
mov dword [ebp - 8], ecx
mov dword [ebx + 0x14b08], 0
sub eax, 2
je 0x1006ede3
sub eax, 6
je 0x1006ec6c
push 0xc
call fcn.1008680d
mov edi, eax
add esp, 4
test edi, edi
je 0x1006eea7
inc dword [ebx + 0x126b8]
cmp dword [ebx + 0x126b8], 1
jb 0x1006e683
push 0
call fcn.1008abae
add esp, 4
mov dword [ebp - 0x1c], edx
mov esi, eax
call sub.KERNEL32.dll_GetCurrentProcessId
xor eax, esi
mov dword [ebx + 0x126ac], eax
push dword [ebx + 0x126ac]
call fcn.10088709
mov ecx, dword [ebp - 8]
add esp, 4
mov edx, ebx
call fcn.1006e590
xor esi, esi
lea ecx, [ecx]
call fcn.100886e8
mov ecx, dword [ebx + 0x48]
sar eax, 7
mov dword [ebp - 4], eax
mov ax, word [ebx + 0x50]
or ax, 2
movzx edx, ax
mov eax, ecx
xor eax, dword [ebp - 4]
movzx eax, al
shr ecx, 8
xor ecx, dword [eax*4 + 0x100b0990]
movzx eax, cl
add eax, dword [ebx + 0x4c]
imul eax, eax, 0x8088405
mov dword [ebx + 0x48], ecx
mov ecx, dword [ebx + 0x50]
inc eax
mov dword [ebx + 0x4c], eax
shr eax, 0x18
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100b0990]
mov eax, edx
xor eax, 1
mov dword [ebx + 0x50], ecx
imul eax, edx
shr eax, 8
xor al, byte [ebp - 4]
mov byte [ebp + esi - 0x3c], al
inc esi
cmp esi, 0xb
jl 0x1006e6a0
mov ecx, dword [ebp - 8]
mov edx, ebx
call fcn.1006e590
mov ax, word [ebx + 0x50]
or ax, 2
mov esi, dword [ebx + 0x48]
movzx ecx, ax
mov eax, dword [ebp - 0x3c]
movzx edx, al
mov eax, dword [ebx + 0x48]
xor eax, edx
shr esi, 8
movzx eax, al
xor esi, dword [eax*4 + 0x100b0990]
mov eax, esi
mov dword [ebp - 4], esi
movzx eax, al
add eax, dword [ebx + 0x4c]
imul esi, eax, 0x8088405
mov ebx, dword [ebx + 0x50]
inc esi
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], ebx
imul eax, ecx
or ebx, 2
movzx ecx, bx
mov ebx, dword [ebp - 4]
shr ebx, 8
movzx eax, ax
shr eax, 8
xor eax, edx
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x3c]
movzx edx, ah
mov eax, dword [ebp - 4]
xor eax, edx
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 8]
movzx eax, al
add eax, esi
imul esi, eax, 0x8088405
inc esi
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], ebx
imul eax, ecx
or ebx, 2
movzx ecx, bx
mov ebx, dword [ebp - 4]
movzx eax, ax
shr eax, 8
xor eax, edx
movzx edx, byte [ebp - 0x3a]
mov dword [ebp - 0x68], eax
mov eax, edx
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
movzx eax, al
add eax, esi
imul esi, eax, 0x8088405
inc esi
mov ebx, dword [ebp - 8]
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], ebx
imul eax, ecx
or ebx, 2
movzx ecx, bx
mov ebx, dword [ebp - 4]
movzx eax, ax
shr eax, 8
xor eax, edx
movzx edx, byte [ebp - 0x39]
mov dword [ebp - 0x64], eax
mov eax, edx
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
movzx eax, al
add eax, esi
mov ebx, dword [ebp - 8]
imul esi, eax, 0x8088405
inc esi
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], ebx
imul eax, ecx
or ebx, 2
movzx ecx, bx
mov ebx, dword [ebp - 4]
movzx eax, ax
shr eax, 8
xor eax, edx
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x38]
movzx edx, al
mov eax, edx
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 8]
movzx eax, al
add eax, esi
imul esi, eax, 0x8088405
inc esi
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], ebx
imul eax, ecx
movzx eax, ax
shr eax, 8
xor eax, edx
or ebx, 2
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x38]
movzx edx, ah
movzx ecx, bx
mov eax, edx
mov ebx, dword [ebp - 4]
xor eax, ebx
movzx eax, al
shr ebx, 8
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
movzx eax, al
add eax, esi
mov ebx, dword [ebp - 8]
imul esi, eax, 0x8088405
inc esi
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], ebx
imul eax, ecx
or ebx, 2
movzx ecx, bx
mov ebx, dword [ebp - 4]
movzx eax, ax
shr eax, 8
xor eax, edx
movzx edx, byte [ebp - 0x36]
mov dword [ebp - 0x58], eax
mov eax, edx
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
movzx eax, al
add eax, esi
mov ebx, dword [ebp - 8]
imul esi, eax, 0x8088405
inc esi
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], ebx
imul eax, ecx
or ebx, 2
movzx ecx, bx
mov ebx, dword [ebp - 4]
movzx eax, ax
shr eax, 8
xor eax, edx
movzx edx, byte [ebp - 0x35]
mov dword [ebp - 0x54], eax
mov eax, edx
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 8]
movzx eax, al
add eax, esi
imul esi, eax, 0x8088405
inc esi
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
mov dword [ebp - 8], ebx
xor eax, 1
imul eax, ecx
or ebx, 2
movzx ecx, bx
mov ebx, dword [ebp - 4]
movzx eax, ax
shr eax, 8
xor eax, edx
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x34]
movzx edx, al
mov eax, edx
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
movzx eax, al
add eax, esi
mov ebx, dword [ebp - 8]
imul esi, eax, 0x8088405
inc esi
mov eax, esi
shr eax, 0x18
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], ebx
imul eax, ecx
or ebx, 2
movzx ecx, bx
mov ebx, dword [ebp - 4]
movzx eax, ax
shr eax, 8
xor eax, edx
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x34]
movzx edx, ah
mov eax, edx
xor eax, ebx
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x100b0990]
mov eax, ebx
mov dword [ebp - 4], ebx
movzx eax, al
add eax, esi
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp - 8]
imul eax, eax, 0x8088405
inc eax
mov dword [ebp - 0x14], eax
shr eax, 0x18
xor eax, esi
shr esi, 8
movzx eax, al
xor esi, dword [eax*4 + 0x100b0990]
mov eax, ecx
xor eax, 1
mov dword [ebp - 8], esi
imul eax, ecx
mov dword [ebx + 0x50], esi
movzx eax, ax
shr eax, 8
xor eax, edx
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x48], eax
mov eax, esi
or eax, 2
movzx eax, ax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 4]
mov ecx, eax
shr ecx, 8
mov dword [ebp - 4], ecx
mov ecx, esi
shr ecx, 8
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x10]
movzx ecx, cx
test edx, edx
jne 0x1006eb2c
not eax
movzx eax, al
mov eax, dword [eax*4 + 0x100b0990]
xor eax, dword [ebp - 4]
mov dword [ebx + 0x48], eax
movzx eax, al
add eax, dword [ebp - 0x14]
imul esi, eax, 0x8088405
mov eax, ecx
xor eax, 1
imul eax, ecx
not eax
movzx ecx, ax
shr ecx, 8
shr edx, 0x18
mov dword [ebp - 0xc], edx
jmp 0x1006eb65
shr edx, 0x18
mov dword [ebp - 0xc], edx
not edx
xor eax, edx
movzx eax, al
mov eax, dword [eax*4 + 0x100b0990]
xor eax, dword [ebp - 4]
mov dword [ebx + 0x48], eax
movzx eax, al
add eax, dword [ebp - 0x14]
imul esi, eax, 0x8088405
mov eax, ecx
xor eax, 1
imul eax, ecx
movzx ecx, ax
shr ecx, 8
movzx eax, dl
xor ecx, eax
inc esi
mov edx, ebx
mov eax, esi
mov ebx, 0x50
shr eax, 0x18
xor eax, dword [ebp - 8]
movzx eax, al
mov eax, dword [eax*4 + 0x100b0990]
xor eax, dword [ebp - 0x1c]
mov dword [edx + ebx], eax
or eax, 2
mov ebx, dword [ebp + 0xc]
movzx edx, ax
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebx + 0x48]
mov eax, ecx
xor eax, dword [ebp - 0xc]
movzx eax, al
shr ecx, 8
xor ecx, dword [eax*4 + 0x100b0990]
movzx eax, cl
add esi, eax
mov dword [ebx + 0x48], ecx
mov ecx, dword [ebx + 0x50]
imul eax, esi, 0x8088405
inc eax
mov dword [ebx + 0x4c], eax
shr eax, 0x18
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100b0990]
mov eax, edx
xor eax, 1
mov dword [ebx + 0x50], ecx
imul eax, edx
movzx eax, ax
shr eax, 8
xor eax, dword [ebp - 0xc]
xor ecx, ecx
mov dword [ebp - 0x40], eax
mov al, byte [ebp + ecx*4 - 0x6c]
mov byte [ebp + ecx - 0x3c], al
inc ecx
cmp ecx, 0xc
jl 0x1006ebe6
mov eax, dword [ebp - 0x3c]
mov esi, 0xc
mov dword [edi], eax
mov eax, dword [ebp - 0x38]
mov dword [edi + 4], eax
mov eax, dword [ebp - 0x34]
mov dword [edi + 8], eax
cmp dword [ebx + 0x10e4], 0
je 0x1006eee8
lea eax, [ebp - 0x24]
mov dword [ebp + 0xc], 0
push eax
push dword [ebx + 0x1104]
lea eax, [ebp - 0x28]
mov dword [ebp - 0x28], esi
push dword [ebx + 0x10fc]
mov dword [ebp - 0x24], 3
push dword [ebx + 0x10f8]
push dword [ebx + 0x10f4]
push dword [ebx + 0x10f0]
push eax
mov eax, dword [ebx + 0x1100]
push edi
push 1
call eax
mov eax, dword [ebp - 0x24]
cmp eax, 3
ja case.0x1006ec65.0
jmp dword [eax*4 + 0x1006ef74]
cmp dword [ebx + 0x126a8], 0
je 0x1006ec81
mov dword [ebx + 0x14af0], 0x90
jmp 0x1006ec90
mov ecx, ebx
call fcn.1006e1f0
test eax, eax
jne 0x1006eea7
cmp dword [ebx + 0x14b18], 0
mov esi, dword [ebx + 0x14af0]
je 0x1006eca7
add esi, 0xa6
jmp 0x1006ecad
add esi, 0x96
push esi
mov dword [ebp + 0xc], esi
call fcn.1008680d
mov edi, eax
add esp, 4
mov dword [ebp - 0x14], edi
test edi, edi
je 0x1006eea7
cmp dword [ebx + 0x126a8], 0
je 0x1006ecdd
push esi
push 0
push edi
call fcn.1007cff0
jmp 0x1006ee93
cmp dword [ebx + 0x14b18], 0
je 0x1006ed20
mov eax, 0x10
mov dword [ebp - 0x1c], 0
mov word [edi], ax
mov ecx, 0x12
mov eax, dword [ebx + 0x14af4]
mov dword [edi + 2], eax
mov eax, dword [ebx + 0x14af8]
mov dword [edi + 6], eax
mov eax, dword [ebx + 0x14afc]
mov dword [edi + 0xa], eax
mov eax, dword [ebx + 0x14b00]
mov dword [edi + 0xe], eax
jmp 0x1006ed2d
xor eax, eax
mov ecx, 2
mov dword [ebp - 0x1c], eax
mov word [edi], ax
mov eax, dword [ebx + 0x126b4]
sub esi, ecx
add esi, 0xfffffffc
sub eax, 2
je 0x1006ed5a
sub eax, 1
je 0x1006ed4e
mov eax, 0x80
mov edx, 0x660e
jmp 0x1006ed64
mov eax, 0x100
mov edx, 0x6610
jmp 0x1006ed64
mov eax, 0xc0
mov edx, 0x660f
mov dword [ecx + edi], esi
mov esi, 3
mov word [ecx + edi + 4], si
mov word [ecx + edi + 6], dx
mov word [ecx + edi + 8], ax
mov eax, 1
mov word [ecx + edi + 0xa], ax
mov ax, word [ebx + 0x14af0]
mov esi, dword [ebx + 0x14af0]
mov word [ecx + edi + 0xc], ax
add ecx, 0xe
push esi
push dword [ebx + 0x14aec]
mov dword [ebp - 0x1c], ecx
lea eax, [ecx + edi]
push eax
call fcn.1007d410
mov eax, dword [ebp - 0x1c]
mov ecx, 0x80
add eax, esi
add esp, 0xc
mov esi, dword [ebx + 0x14b04]
mov dword [eax + edi], 0
mov word [edi + eax + 4], cx
add edi, 6
add edi, eax
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x14]
mov esi, dword [ebp + 0xc]
jmp 0x1006ee96
mov eax, dword [ebx + 0x126b4]
and eax, 3
lea esi, [eax*4 + 6]
push esi
mov dword [ebp + 0xc], esi
call fcn.1008680d
mov edi, eax
add esp, 4
test edi, edi
je 0x1006eea7
cmp dword [ebx + 0x126a8], 0
je 0x1006ee20
push esi
lea eax, [ebp - 0x3c]
push 0
push eax
call fcn.1007cff0
jmp 0x1006ee85
mov esi, dword [ebp - 8]
lea eax, [ebx + 0x148ec]
push ebx
push eax
lea ecx, [ebx + 0x148e8]
push ecx
lea edx, [ebx + 0x148d8]
push edx
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebx + 0x126b4]
mov edx, esi
push eax
call fcn.100732d0
add esp, 0x14
test eax, eax
jne 0x1006ee9e
mov esi, dword [ebx + 0x126b4]
and esi, 3
lea eax, [esi*4 + 4]
push eax
lea eax, [ebx + 0x148d8]
push eax
lea eax, [ebp - 0x3c]
push eax
call fcn.1007d410
mov ax, word [ebx + 0x148e8]
mov word [ebp + esi*4 - 0x38], ax
mov esi, dword [ebp + 0xc]
add esp, 0xc
lea eax, [ebp - 0x3c]
push esi
push eax
push edi
call fcn.1007d410
add esp, 0xc
test esi, esi
jne 0x1006ec0a
push edi
call fcn.10086818
add esp, 4
mov eax, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x28]
cmp eax, esi
jne case.0x1006ec65.0
add dword [ebx + 0x10f8], eax
adc dword [ebx + 0x10fc], 0
jmp 0x1006ef5b
mov dword [ebx + 0xa4], 1
mov dword [ebp + 0xc], 9
jmp 0x1006ef5b
mov dword [ebp + 0xc], 4
jmp 0x1006ef5b
xor eax, eax
mov dword [ebp + 0xc], eax
cmp dword [ebx + 0x9524], eax
je 0x1006ef17
mov ecx, ebx
call fcn.1006bf90
test edx, edx
jg 0x1006ef1b
jl 0x1006ef06
cmp eax, esi
jae 0x1006ef1b
mov edx, dword [ebp + 8]
xor ecx, ecx
push ebx
call fcn.1006c030
add esp, 4
mov dword [ebp + 0xc], eax
test eax, eax
jne 0x1006ef5b
cmp dword [ebx + 0x9524], 0
lea eax, [ebx + 0xac]
mov dword [ebp + 0xc], 0
jne 0x1006ef34
mov eax, dword [ebp + 8]
push 0
lea ecx, [ebp + 0xc]
push ecx
push esi
push edi
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x1006ef54
cmp esi, dword [ebp + 0xc]
mov dword [ebp + 0xc], 0
je 0x1006ef5b
mov dword [ebp + 0xc], 0xe
push edi
call fcn.10086818
mov eax, dword [ebp + 0xc]
add esp, 4
mov dword [ebx + 0x14b08], esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret